Авторский канал действующего разработчика — интересные заметки, новые технологии, библиотеки и фреймворки
Сотрудничество: @bape_ads
Прайс: @bape_media
РКН: https://clck.ru/3GHfTK
Реклама на бирже: https://telega.in/c/java_tg
Post #3370
3.09K
❔ Вопрос с собеседования
Почему
Ответ: Метод Thread.sleep() приостанавливает выполнение потока на заданное время, но при этом не освобождает монитор, если поток удерживает synchronized-блокировку.
Это происходит потому, что sleep() просто переводит поток в состояние ожидания (TIMED_WAITING), но не влияет на механизмы синхронизации. Пока поток “спит”, другие потоки не могут получить доступ к заблокированному ресурсу, так как монитор остается занятым.
Чтобы освободить монитор и дать другим потокам возможность выполнить код, необходимо использовать wait(), join(), Lock или Condition, которые позволяют явно управлять блокировкой и ожиданием.
tags: #собеседование
📱 Java Developer | Чат
Почему
Thread.sleep() не освобождает монитор блокировки?Ответ: Метод Thread.sleep() приостанавливает выполнение потока на заданное время, но при этом не освобождает монитор, если поток удерживает synchronized-блокировку.
Это происходит потому, что sleep() просто переводит поток в состояние ожидания (TIMED_WAITING), но не влияет на механизмы синхронизации. Пока поток “спит”, другие потоки не могут получить доступ к заблокированному ресурсу, так как монитор остается занятым.
Чтобы освободить монитор и дать другим потокам возможность выполнить код, необходимо использовать wait(), join(), Lock или Condition, которые позволяют явно управлять блокировкой и ожиданием.
tags: #собеседование
📱 Java Developer | Чат
- ❤ 17
- 🔥 8
- 👍 4













