2013-06-30 4 views
0

При переходе через Javadoc для метода notifyAll() по классу объектов пришел через следующие строки:Прерванный Исключение вхождение причина

Если текущий поток прерывается любым потоком до или во время ожидания, затем Прерывается прерывание. Это исключение не выбрасывается до тех пор, пока статус блокировки этого объекта не будет восстановлен, как описано выше.

Дело:

текущий поток прерывается во время ожидания

Что это значит? Может ли поток прерываться, пока он ждет? Если да, то почему? Какая польза от этого?

+0

Это значит, что он прерывает свое состояние ожидания. –

ответ

2

Поток может быть прерван во время ожидания, если другой поток вызывает:

waitingThread.interrupt(); 

Это может произойти, если вы делаете это сами, конечно, но если вы используете рамки для управления потоками, как правило, услугу исполнителя, и вызовите некоторые из методов, которые прерывают потоки, лежащие в основе (например, shutdownNow или если вы вызываете future.cancel(true); в Будущее, возвращенное методом submit).

Механизм прерывания - это то, как Java позволяет одному потоку сообщать другому, чтобы остановить то, что он делает, и поэтому чрезвычайно полезна.

+0

Это на самом деле только 'cancel (true)' :-) –

+0

Да действительно - отредактирован. – assylias

+0

Действительно: механизм прерывания утверждает, что «прекратите то, что он делает», – Abhishek

2

Значение «прерывание потока» в Java означает, что установлен флаг потока , не более того. Тем не менее, большинство методов JDK, которые ожидают поток, сразу узнают об этом и выходят из состояния ожидания, бросая InterruptedException. Так обстоит дело с методами, о которых вы читали.

 Смежные вопросы

  • Нет связанных вопросов^_^