Решил проверить срабатывание isInterrupted() следующим кодом:
public class Solution {
public static volatile int countSeconds = 3;
public static void main(String[] args) throws InterruptedException {
RacingClock clock = new RacingClock();
Thread.sleep(3500);
System.out.println(clock.isInterrupted());
clock.interrupt();
System.out.println(clock.isInterrupted());
}
public static class RacingClock extends Thread {
public RacingClock() {
start();
}
public void run() {
}
}
}
И столкнулся с тем, что System.out.println(clock.isInterrupted()) после вызова clock.interrupt() выводит false. В чем может быть причина?
Потому, что поток который вы пытаетесь прервать уже завершился
public void interrupt()
Interrupting a thread that is not alive need not have any effect.
Прерывание потока, который уже завершился не имеет никакого эффекта
public boolean isInterrupted()
A thread interruption ignored because a thread was not alive at the time of the interrupt will be reflected by this method returning false.
Прерывание потока игнорируется, если поток был завершен к этому времени. Поэтому в этом случае метод возвращает false
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Все страницы отображаются нормально, только в одной отображается все кроме текста добавления который подтягивается с базы и отображения...
При ping-е соединения выходит ошибка: