Товарищи, не могу понять в чём проблема.
Программа выводит "4 3 2 1 Прервано!" если numSeconds равно 4.
Последнее условие при этом не выполняется.
Неужели валидатору не нравится что я использую не флаг interrupt(), а свой собственный флаг isCanceled?
package com.javarush.task.task16.task1617;
/*
Отсчет на гонках
*/
public class Solution {
public static volatile int numSeconds = 3;
public static volatile boolean isCanceled = false;
public static void main(String[] args) throws InterruptedException {
RacingClock clock = new RacingClock();
Thread current = Thread.currentThread();
try {
current.sleep(3500);
clock.interrupt();
}
catch (InterruptedException e) {
}
}
public static class RacingClock extends Thread {
public RacingClock() {
start();
}
public void run() {
while (!isCanceled) {
System.out.print(numSeconds + " ");
try {
Thread.sleep(1000);
numSeconds--;
if (numSeconds == 0) {
System.out.println("Марш!");
isCanceled = true;
}
}
catch (InterruptedException e) {
System.out.println("Прервано!");
isCanceled = true;
}
}
}
}
}