Java 执行器服务关闭不中断线程

Java 执行器服务关闭不中断线程,java,multithreading,executorservice,interrupt-handling,Java,Multithreading,Executorservice,Interrupt Handling,我试着重复Bruce Eckel的书《用java思考》中的例子: 但是我有错误的执行器服务行为。当我调用shutdown方法时,线程不会中断并继续工作 但是如果我改变这个例子并使用 Future<?> submit = executorService.submit(new WaxOff(car)); Future submit=executorService.submit(新WaxOff(car)); 延迟后调用submit.cancel(true)-线程中断正常 似乎当您调用s

我试着重复Bruce Eckel的书《用java思考》中的例子:

但是我有错误的
执行器服务
行为。当我调用
shutdown
方法时,线程不会中断并继续工作

但是如果我改变这个例子并使用

Future<?> submit = executorService.submit(new WaxOff(car));
Future submit=executorService.submit(新WaxOff(car));
延迟后调用submit.cancel(true
)-线程中断正常


似乎当您调用
shutdown
时,执行器必须中断所有线程,我必须转到catch块(catch
InterruptedException
),但它不起作用。

执行器。newCachedThreadPool
线程池执行器内部用作线程池

:

启动有序关机,在该关机过程中,以前提交的任务将被删除 已执行,但不会接受新任务

:

此实现通过Thread.interrupt()中断任务


因此,您可以使用
shutdownow

Executors.newCachedThreadPool
在内部使用
ThreadPoolExecutor
作为线程池

:

启动有序关机,在该关机过程中,以前提交的任务将被删除 已执行,但不会接受新任务

:

此实现通过Thread.interrupt()中断任务


因此,您可以使用
shutdownow

使用PS,读一点javadocs会对你有所帮助,也可以使用PS,读一点javadocs也会对你有所帮助
Future<?> submit = executorService.submit(new WaxOff(car));