wait / notify / notifyAll — правила?

Ответ

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

Разбор: wait/notify/notifyAll вызываются только внутри synchronized на ТОМ ЖЕ объекте, чей монитор захвачен, иначе IllegalMonitorStateException. wait() освобождает монитор и засыпает, notify будит один поток, notifyAll — все. Дистракторы ошибочны: монитор при wait() освобождается (а не удерживается), порядок пробуждения и захват монитора не гарантированы (нет FIFO), а объект должен быть именно тот, на котором synchronized, а не произвольный или volatile.

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

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