24просмотров
25 декабря 2025 г.
questionScore: 26
🎯 Виртуальные потоки (Virtual Threads): революция или эволюция? Java 21 принесла виртуальные потоки — одну из самых важных фич за последние годы. Давайте разберёмся без хайпа. Проблема: Обычные (platform) потоки Java — это обёртки над потоками ОС. Они дорогие (память ~1 МБ, затраты на переключение контекста). 10 000 потоков = 10 ГБ RAM! Решение: Виртуальные потоки — легковесные потоки JVM, которые многопоточно выполняются на небольшом пуле platform-потоков. Простой пример: try (var executor = Executors.newVirtualThreadPerTaskExecutor()) { // Запускаем 10 000 задач без страха! for (int i = 0; i < 10_000; i++) { executor.submit(() -> { Thread.sleep(Duration.ofSeconds(1)); return "Done"; }); }
}
✔️Когда использовать: ✈️ Много IO-задач (HTTP-запросы, БД, файлы)
✈️ Высоконагруженные сервисы с большим количеством параллельных операций
✈️ Заменять CompletableFuture и реактивные подходы в простых сценариях 🚫Когда НЕ использовать: ✈️ CPU-bound задачи (тяжёлые вычисления)
✈️ Код с synchronized (может блокировать carrier-поток) 📌Итог: Виртуальные потоки — не панацея, но мощный инструмент для IO-задач. Они упрощают конкурентный код, делая его похожим на последовательный. ✈️Подписаться: @iamjavadev #NPE@iamjavadev, #virtualthreads #java21 #многопоточность #производительность@iamjavadev