public class SelfInterruption {
public static void main(String[] args) {
Thread.currentThread().interrupt();
if (Thread.interrupted()) {
System.out.println("Interrupted: "
+ Thread.interrupted());
} else {
System.out.println("Not interrupted: "
+ Thread.interrupted());
}
}
}
Вы удивитесь, но она напечатает "Interrupted: false"
Но почему? Дело в том, что вызов метода
Thread.interrupted()
всегда очищает состояние флага interrupted текущего потока. Ну мы и получили, что первый вызов вернул true
, а второй - false
. Для решения проблемы нужно вызывать метод Thread.currentThread().isInterrupted()
, который не изменяет состояние флага interrupted.
Комментариев нет:
Отправить комментарий