notify () -> все потоки в наборе ожидания должны завершиться - PullRequest
0 голосов
/ 27 декабря 2018

Согласно 17.2.4.Взаимодействие ожиданий, уведомлений и прерываний :

Аналогичным образом уведомления не могут быть потеряны из-за прерываний.Предположим, что набор s потоков находится в наборе ожидания объекта m, а другой поток выполняет уведомление для m.Затем либо:

a) хотя бы один поток в s должен нормально возвращаться из ожидания, либо

b) все потоки в s должны выйти из ожидания, выдав InterruptedException

Это удивляет меня, потому что я знаю, что notify() только пробуждает одну нить , поэтому b) не может произойти.Опция b) кажется мне совершенно бессмысленной, поскольку помимо того, что notify() ведет себя как notifyAll(), он также должен прерывать все ожидающие потоки.

Q: этот абзац неправильный?Если нет, то почему нет?

1 Ответ

0 голосов
/ 27 декабря 2018

все потоки в s должны выйти из режима ожидания, выдав InterruptedException

Это означает, что все потоки, ожидающие на s, были прерваны.

b) означаетчто если все потоки прерваны, ни один поток не выйдет из wait() нормально из-за прерывания.

...