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