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