Метод notifyAll() в Java используется для пробуждения всех потоков, которые ожидают на мониторе объекта (то есть вызвали wait() на этом объекте). В отличие от notify(), который пробуждает только один случайный ожидающий поток, notifyAll() пробуждает всех, позволяя им повторно попытаться получить монитор и продолжить выполнение. Это полезно, когда несколько потоков могут быть заблокированы и нужно разбудить их всех, чтобы они проверили условие продолжения работы.
Что делают Object.wait(), notify() и notifyAll()?
Метод notifyAll() в Java используется для пробуждения всех потоков, которые ожидают на мониторе объекта (то есть вызвали wait() на этом объекте).
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Метод notifyAll() в Java используется для пробуждения всех потоков, которые ожидают на мониторе объекта (то есть вызвали wait() на этом объекте). В отличие от notify(), который пробуждает только один случайный ожидающий поток, notifyAll() пробуждает всех, позволяя им повторно попытаться получить монитор и продолжить выполнение. Это полезно, когда несколько потоков могут быть заблокированы и нужно разбудить их всех, чтобы они проверили условие продолжения работы.