Назад к вопросам
Junior — Middle
58
Каково назначение метода notifyAll() в классе Object и в каких ситуациях его следует применять?
Компании, где спрашивали
Prooftech
Ответ от нейросети
sobes.tech AI
Метод notifyAll() класса Object в Java используется для пробуждения всех потоков, которые ожидают на данном объекте (то есть вызвали wait() на этом объекте).
Назначение:
- Когда состояние объекта изменяется так, что все ожидающие потоки могут продолжить работу, вызывается notifyAll(), чтобы разбудить их всех.
Когда применять:
- Если несколько потоков ждут определённого условия, и изменение этого условия может позволить продолжить работу нескольким из них, нужно использовать notifyAll(), чтобы избежать ситуации, когда некоторые потоки останутся заблокированными.
Пример:
synchronized(obj) {
// изменение состояния
obj.notifyAll(); // пробуждаем всех ожидающих
}
Важно: notifyAll() следует использовать, когда несколько потоков могут быть разбужены и продолжить работу, в отличие от notify(), который пробуждает только один поток.