Вопрос проверяет знание современных возможностей Java и понимание масштабируемой многопоточности.
Virtual threads — это лёгкие потоки, управляемые JVM, а не операционной системой. Они позволяют создавать миллионы потоков без серьёзных накладных расходов. Идея заключается в том, чтобы упростить конкурентный код, сохранив привычную модель потоков. Virtual threads особенно эффективны для задач с большим количеством блокирующих операций. Они появились в рамках Project Loom.
Virtual threads — это потоки, которые:
создаются и управляются JVM
не имеют собственного потока ОС
выполняются поверх небольшого пула carrier-потоков
Потоки ОС:
тяжёлые
ограничены ресурсами системы
плохо масштабируются при большом количестве блокирующих операций
Virtual threads позволяют:
писать обычный блокирующий код
масштабироваться как асинхронные решения
избежать callback- и reactive-сложности
Thread.startVirtualThread(() -> {
// блокирующий код
});
JVM:
паркует virtual thread при блокировке
освобождает carrier-поток
возобновляет выполнение позже
I/O-нагруженные сервисы
серверные приложения
высококонкурентные системы
Virtual threads упрощают конкурентный код и радикально повышают масштабируемость без перехода на сложные асинхронные модели.