Junior — Middle
85
¿Cuál es la finalidad del método notifyAll() en la clase Object y en qué situaciones debe aplicarse?
Empresas donde se preguntó
Prooftech
Respuesta de la IA
sobes.tech AI
Метод notifyAll() класса Object в Java используется для пробуждения всех потоков, которые ожидают на данном объекте (то есть вызвали wait() на этом объекте).
Назначение:
- Когда состояние объекта изменяется так, что все ожидающие потоки могут продолжить работу, вызывается notifyAll(), чтобы разбудить их всех.
Когда применять:
- Если несколько потоков ждут определённого условия, и изменение этого условия может позволить продолжить работу нескольким из них, нужно использовать notifyAll(), чтобы избежать ситуации, когда некоторые потоки останутся заблокированными.
Пример:
synchronized(obj) {
// изменение состояния
obj.notifyAll(); // пробуждаем всех ожидающих
}
Важно: notifyAll() следует использовать, когда несколько потоков могут быть разбужены и продолжить работу, в отличие от notify(), который пробуждает только один поток.