🔍 Ответ на задачу про Virtual Threads: Опасность synchronized 📌
В текущей реализации , начиная с Java 21 виртуальные потоки не могут освобождать системный (carrier) поток, если они находятся внутри
Вывод:
Системный поток будет заблокирован (ответ 2). Рекомендуется использовать
⚡️ Не перепутайте:
Это не значит, что
#java #java21 #virtualthreads #loom #concurrency #интервью #java_interview_tasks
В текущей реализации , начиная с Java 21 виртуальные потоки не могут освобождать системный (carrier) поток, если они находятся внутри
synchronized блока или вызывают нативный метод. Это называется Pinning. Если ваш код делает тяжелые сетевые вызовы внутри synchronized, вы можете забить все системные потоки и свести на нет всю пользу от виртуальных потоков.Вывод:
Системный поток будет заблокирован (ответ 2). Рекомендуется использовать
ReentrantLock, так как он не вызывает закрепления потока.⚡️ Не перепутайте:
Это не значит, что
synchronized — зло. Если операция внутри блока быстрая (просто инкремент), закрепление не будет проблемой.#java #java21 #virtualthreads #loom #concurrency #интервью #java_interview_tasks
👍4🔥1