Virtual Threads — почему они изменили многопоточность в Java?

В 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
Открыть в MAX Сообщить о неточности

Сообщить о неточности

Опишите, что нужно исправить. Если есть источник, добавьте ссылку.

Вы покидаете datool.ru

Ссылка ведёт на внешний сайт. datool.ru не отвечает за его содержимое — проверьте адрес, прежде чем вводить пароли или платёжные данные.

Переход через 10 с

Перейти