Pytanie odnośnie wyniku w konsoli podczas debugowania

0
    public class Solution {
    public static volatile int numSeconds = 4;
    public static volatile boolean isInterupted = false;

    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() {
            try {
                while (numSeconds > 0) {
                    System.out.print(numSeconds + " ");
                    numSeconds--;
                    Thread.sleep (1000);}
            } catch (InterruptedException e) {
                System.out.print("Interrupt!");
                isInterupted = true;
            }
            System.out.printf ("%s", isInterupted ? "" : "Start!");
        }
    }
}

Mam pytanie, gdy wykonuje kod uruchamiając go mam wynik 4 3 2 1 Interrupt lub Start! gdy wątek będzie wykonywał sie krócej niż 3500 ms i nie dojdzie do rzucenia wyjątku, uśpienie wątku main działa, ale jak debuguje program to po uśpieniu wątku RacingClock, powoduje nagły przeskok do main i wywołanie metody interrupt na wątku clock co skutkuje, przerwaniem programu, dlaczego tak się dzieje?

5

Dzieje się tak, bo (w trakcie debugowania wątku) minęło już 3500 milisekund.

0

Dzięki za pomoc.

1 użytkowników online, w tym zalogowanych: 0, gości: 1