Sobes.tech
Назад к вопросам
Junior — Middle
58

Каково назначение метода notifyAll() в классе Object и в каких ситуациях его следует применять?

Компании, где спрашивали
Prooftech

Ответ от нейросети

sobes.tech AI

Метод notifyAll() класса Object в Java используется для пробуждения всех потоков, которые ожидают на данном объекте (то есть вызвали wait() на этом объекте).

Назначение:

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

Когда применять:

  • Если несколько потоков ждут определённого условия, и изменение этого условия может позволить продолжить работу нескольким из них, нужно использовать notifyAll(), чтобы избежать ситуации, когда некоторые потоки останутся заблокированными.

Пример:

synchronized(obj) {
    // изменение состояния
    obj.notifyAll(); // пробуждаем всех ожидающих
}

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