Virtual Threads не размножают CPU и коннекты. Сюрприз
Virtual Threads масштабируют blocking I/O без отдельного дорогого platform thread на каждую задачу. Они удешевляют ожидание, но не создают CPU, соединения с БД или capacity downstream — физика опять испортила презентацию.
OpenJDK в JEP 444 показывает 10 000 одновременных задач как демонстрацию и прямо советует не пулить virtual threads. JEP 491 в JDK 24 устранил почти всё synchronized-pinning; JFR сохраняет диагностику редких native/class-init случаев.
Статусы OpenJDK: Virtual Threads final в JDK 21, Scoped Values final в 25, Structured Concurrency — 6-й preview в 26 и 7-й в 27.
100 000 запросов к pool из 100 DB connections дают максимум 100 активных операций и до 99 900 ожидающих. Ограничивать нужно scarce resource, а не virtual threads.
Забивать очередь дешёвыми потоками — всё ещё херовая архитектура, просто теперь она дешевле ждёт.
#Java #JVM #VirtualThreads
Virtual Threads масштабируют blocking I/O без отдельного дорогого platform thread на каждую задачу. Они удешевляют ожидание, но не создают CPU, соединения с БД или capacity downstream — физика опять испортила презентацию.
OpenJDK в JEP 444 показывает 10 000 одновременных задач как демонстрацию и прямо советует не пулить virtual threads. JEP 491 в JDK 24 устранил почти всё synchronized-pinning; JFR сохраняет диагностику редких native/class-init случаев.
Статусы OpenJDK: Virtual Threads final в JDK 21, Scoped Values final в 25, Structured Concurrency — 6-й preview в 26 и 7-й в 27.
100 000 запросов к pool из 100 DB connections дают максимум 100 активных операций и до 99 900 ожидающих. Ограничивать нужно scarce resource, а не virtual threads.
Забивать очередь дешёвыми потоками — всё ещё херовая архитектура, просто теперь она дешевле ждёт.
#Java #JVM #VirtualThreads