wait / notify / notifyAll — правила использования?

Ответ

Вызывать только внутри synchronized на том же объекте. wait() освобождает монитор и засыпает. notify будит один поток, notifyAll — все.

Разбор: Эти методы требуют владения монитором именно того объекта, на котором synchronized; иначе IllegalMonitorStateException. wait() освобождает монитор и засыпает, notify будит один поток, notifyAll — все. Дистракторы неверны: нельзя вызывать вне synchronized или на чужом объекте, порядок пробуждения не гарантирован (нет очереди FIFO), а notifyAll не отдаёт монитор всем сразу — проснувшиеся потоки всё равно по очереди его перезахватывают.

Хочешь так же по своей компании — с вопросами по грейдам и задачами? Закажи гайд или забери свежее в Telegram.

Заказать гайд Пройти тест
новые гайды и свежие вопросы с собесов — первыми в Telegram Смотреть гайды Подписаться