Программа продолжает выполняться, несмотря на InterruptedException

Я начал изучать Java, и теперь я нахожусь в главе о параллелизме. Прочитав кое-что о параллелизме, я попробовал собственный пример.

public class Task implements Runnable{

public void run() {
    while(!Thread.interrupted()) {
        try {
            System.out.println("task");
            TimeUnit.SECONDS.sleep(2);
        }catch (InterruptedException e) {
            System.out.println("interrupted");
        }
    }
}

}

public static void main(String[] args) throws Exception {
    ExecutorService exec = Executors.newCachedThreadPool();
    exec.execute(new Task());
    TimeUnit.SECONDS.sleep(10);
    exec.shutdownNow();
}

Проблема в том, что я ожидал увидеть следующий результат:

task
task
task
task
task
interrupted

, но после того, как я получил это, программа продолжала печатать, пока я не закрою его.
Итак, мой вопрос: что я делаю не так? почему программа продолжает печать?

6
задан Raedwald 7 November 2018 в 16:19
поделиться