Java 执行器服务关闭不中断线程
我试着重复Bruce Eckel的书《用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
执行器服务行为。当我调用shutdown
方法时,线程不会中断并继续工作
但是如果我改变这个例子并使用
Future<?> submit = executorService.submit(new WaxOff(car));
Future submit=executorService.submit(新WaxOff(car));
延迟后调用submit.cancel(true
)-线程中断正常
似乎当您调用shutdown
时,执行器必须中断所有线程,我必须转到catch块(catchInterruptedException
),但它不起作用。执行器。newCachedThreadPool
将线程池执行器内部用作线程池
:
启动有序关机,在该关机过程中,以前提交的任务将被删除
已执行,但不会接受新任务
:
此实现通过Thread.interrupt()中断任务
因此,您可以使用shutdownow
Executors.newCachedThreadPool
在内部使用ThreadPoolExecutor
作为线程池
:
启动有序关机,在该关机过程中,以前提交的任务将被删除
已执行,但不会接受新任务
:
此实现通过Thread.interrupt()中断任务
因此,您可以使用shutdownow
使用PS,读一点javadocs会对你有所帮助,也可以使用PS,读一点javadocs也会对你有所帮助
Future<?> submit = executorService.submit(new WaxOff(car));