私は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
しかし、これを取得した後、プログラムは閉じるまで印刷を続けます。
だから、私の質問は私が間違っていることですか?プログラムが印刷を続行するのはなぜですか?