Помогите, пожалуйста, разобраться, почему после окончания заданного времени в методе 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 0