Согласно 17.2.4. Взаимодействие ожиданий, уведомлений и прерываний:
Точно так же уведомления не могут быть потеряны из-за прерываний. Предположим, что набор потоков s находится в наборе ожидания объекта m, а другой поток выполняет уведомление о m. Тогда либо:
а) по крайней мере один поток в s должен нормально вернуться из ожидания или
б) все потоки в s должны выйти из ожидания, бросив InterruptedException
Это меня удивляет, потому что я знаю, что notify()
только пробуждает один поток, поэтому b) не может произойти. Вариант b) кажется мне совершенно бессмысленным, потому что помимо того, что notify()
ведет себя как notifyAll()
, он также должен прерывать все ожидающие потоки.
Вопрос: этот абзац неверен? Если нет, то почему?