Что делают Object.wait(), notify() и notifyAll()?

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

Короткий ответ

Что ответить на собеседовании

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

Подробный разбор

Ответ с пояснениями

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

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее