Virtual threads это лёгкие потоки, которые управляются JVM, а не операционной системой.
JVM умеет приостанавливать и возобновлять выполнение без лишней траты ресурсов ОС.
IO-вызовы не блокируют потоки ОС.
Виртуальные потоки работают поверх небольшого пула платформенных потоков.
Пример:
try (ExecutorService executor = Executors.newVirtualThreadPerTaskExecutor()) {
for (int i = 0; i < 10000; i++) {
executor.submit(() -> {
Thread.sleep(1000);
});
}
}👉 Java Portal