Virtual Threads — почему они изменили многопоточность в Java?
В Java 21 Virtual Threads стали стандартной возможностью. Их главная идея — позволить создавать огромное количество лёгких потоков без необходимости вручную управлять небольшим пулом обычных `Thread`.
Создать виртуальный поток можно очень просто:
Или через ExecutorService:
Обычный поток ОС (platform thread) — относительно тяжёлый ресурс. Создавать тысячи таких потоков одновременно обычно нецелесообразно.
Virtual Thread значительно легче и хорошо подходит для большого количества задач, которые большую часть времени ждут: HTTP-запросы, работа с базой данных, файловые операции и т.д.
При этом Virtual Threads **не делают CPU-bound задачи быстрее. Если задача активно использует процессор, количество виртуальных потоков само по себе производительность не увеличит.
Главная идея:
Virtual Threads особенно полезны для высококонкурентных приложений с большим количеством блокирующих операций ввода-вывода.
А привычный синхронный код при этом можно сохранить — и это одна из главных особенностей подхода.
В Java 21 Virtual Threads стали стандартной возможностью. Их главная идея — позволить создавать огромное количество лёгких потоков без необходимости вручную управлять небольшим пулом обычных `Thread`.
Создать виртуальный поток можно очень просто:
Thread.startVirtualThread(() -> {
System.out.println("Hello from virtual thread");
});
Или через ExecutorService:
try (var executor = Executors.newVirtualThreadPerTaskExecutor()) {
executor.submit(() -> {
// HTTP-запрос или другая задача
});
}
Обычный поток ОС (platform thread) — относительно тяжёлый ресурс. Создавать тысячи таких потоков одновременно обычно нецелесообразно.
Virtual Thread значительно легче и хорошо подходит для большого количества задач, которые большую часть времени ждут: HTTP-запросы, работа с базой данных, файловые операции и т.д.
При этом Virtual Threads **не делают CPU-bound задачи быстрее. Если задача активно использует процессор, количество виртуальных потоков само по себе производительность не увеличит.
Главная идея:
Virtual Threads особенно полезны для высококонкурентных приложений с большим количеством блокирующих операций ввода-вывода.
А привычный синхронный код при этом можно сохранить — и это одна из главных особенностей подхода.
Просмотры: 24