Из Java Thread docs (курсив мой):
static boolean interrupted()
: проверяет, является ли тока поток был прерван.
Это на самом деле статический метод (а) предназначен для использования в целевой нити, чтобы увидеть, если кто-то прервал его, следовательно, вы будете использовать его в самой t.run()
.
Поток также может быть уведомлен InterruptedException, если они вызвали метод, который выдает это исключение, например Thread.sleep()
.
И, согласно этой ссылке выше, в описании подробных из Thread.interrupted()
, как поток очищает свой собственный статус прерывания от вызова это:
Прерванное состояние резьбы очищается этим методом.
Чтобы проверить, если разные нить была прервана, используйте нестатические isInterrupted()
:
boolean isInterrupted()
: тесты, была ли прервана эта нить.
(а) Я часто думал, что это было бы хорошей идеей, если компилятор предупредить вас, если вы вызываете статический (на уровне класса) метод на конкретном объекте. Я видел несколько случаев, когда люди были укушены подобными проблемами.
Но тогда я думаю, почему? Люди, использующие язык, должны понимать язык, даже глубокие темные его углы, например, C (например) имеет довольно несколько из них :-)
см. Эту ссылку: http://stackoverflow.com/questions/ 3590000/what-does-java-lang-thread-interrupt-do – aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa