中断,关闭方法和ExecutorService

Rol*_*all 3 java concurrency executor

直接来自这个java教程:

为了支持立即关闭,任务应该正确处理中断

有人能说清楚这一点吗?任务和中断与关机方法之间的关系是什么?这只是意味着是否有任务等待它必须抛出的东西InterruptedException

提前致谢.

Evg*_*eev 10

想象一下,您使用ExecutorService运行此任务

class Task implements Runnable() {
   public void run() {
       while(true) {
       }
   }
}
Run Code Online (Sandbox Code Playgroud)

现在要使用shutdownNow()关闭ExecutorService.ExecutorService将在运行任务的线程上调用interrupt(),但由于任务不响应中断,因此它将继续运行,ExecutorService将永远不会关闭.

以下更改将使此任务可中断

       while(!Thread.interrupted()) {
       }
Run Code Online (Sandbox Code Playgroud)

并将允许ExecutorService关闭