Встречается на собеседованиях • сегодня

Зачем нужен метод notifyAll() из класса Object

Метод notifyAll() используется для пробуждения всех потоков, ожидающих на мониторе объекта. В отличие от notify(), который разблокирует только один случайный поток, notifyAll() гарантирует, что все ожидающие потоки получат уведомление.

Пример:

java
synchronized (lock) {
    lock.notifyAll(); // Все потоки, ждущие lock, будут разбужены
}

Используется, когда:

  1. Несколько потоков ожидают одного условия, и нужно разбудить их всех.
  2. Приоритеты потоков неизвестны, и важно, чтобы каждый получил шанс на выполнение.
  3. В сложных сценариях синхронизации, где notify() может привести к deadlock.

Важно: после вызова notifyAll() потоки всё равно должны перепроверять условие, так как состояние могло измениться до получения монитора.

Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы