Когда Thread.interrupt () называют на некотором потоке, что происходит? [дубликат]

10
задан Gray 8 May 2012 в 01:24
поделиться

4 ответа

Не уверенный, что вы хотите, но смотрите на эти события для ContextMenu и MenuItem:

ContextMenu:

http://msdn.microsoft.com/en-us/library/system.windows.controls.contextmenu_events.aspx

MenuItem:

http://msdn.microsoft.com/en-us/library/system.windows.controls.menuitem_events.aspx

я думаю ContextMenuOpening и , ContextMenuClosing мог бы быть интересным;)

-121--3894336-

Целевой поток «прерван». В основном в этом потоке устанавливается флаг, на который поток может смотреть (с помощью Thread.interrupted () ). Если целевой поток в данный момент заблокирован для некоторых операций ввода-вывода или Object.wait () , то он пробуждается, соответственно, с помощью -IOException или -Eption .

Прерывание потока - это мягкий способ подтолкнуть поток. Используется для того, чтобы дать ниткам шанс выйти из чисто , в отличие от Thread.stop () , что больше похоже на стрельбу ниткой из автомата.

31
ответ дан 3 December 2019 в 14:18
поделиться

Вот JDK 1.6 Javadoc :

Прерывает этот поток.

Если текущий поток не прерывает сам себя, что всегда разрешено, вызывается метод checkAccess этого потока, что может вызвать SecurityException быть брошенным .

Если этот поток заблокирован при вызове методов wait (), wait (long), или wait (long, int) класса Object , или методов join (), join (long), join (long, int), sleep (long) или sleep (long, int), этого class, то его состояние прерывания будет очищено, и он получит исключение InterruptedException.

Если этот поток заблокирован в операции ввода-вывода на прерываемом канале, то канал будет закрыт, состояние прерывания потока изменится. будет установлено, и поток получит исключение ClosedByInterruptException.

Если этот поток заблокирован в селекторе , тогда будет установлен статус прерывания потока , и он немедленно вернет из операции выбора , возможно с ненулевым значением , как если бы был вызван метод пробуждения селектора.

Если ни одно из предыдущих условий не выполнено, то будет установлен статус прерывания этого потока .

Прерывание неактивного потока не должно иметь никакого эффекта.

2
ответ дан 3 December 2019 в 14:18
поделиться

Документ Javadoc для этого метода объясняет, что происходит в какой ситуации.

2
ответ дан 3 December 2019 в 14:18
поделиться

ZeissS прав, сигнализация - самый чистый способ сделать это. вы также можете перехватить исключение прерывания и таким образом очистить его.

0
ответ дан 3 December 2019 в 14:18
поделиться
Другие вопросы по тегам:

Похожие вопросы: