Привет, Хабр!
Виртуальные потоки приехали в Java 21 с оговоркой, которая полтора года ходила за ними по пятам: внутри synchronized поток намертво прилипает к своему носителю. Отсюда и советы: меняйте synchronized на ReentrantLock, иначе никакого Loom вы не увидите!
Совет был верным до марта 2025 года. Потом вышла Java 24 с JEP 491, и оговорку сняли: монитор больше не держит носитель, виртуальный поток спокойно отцепляется внутри synchronized и так же спокойно возвращается.
Но устаревший совет — это ещё полбеды.