【发布时间】:2010-10-27 12:24:14
【问题描述】:
我已经实现了自定义取消逻辑,如实践中的并发中所述。
Encapsulating nonstandard cancellation in a task with newTaskFor。
这工作正常,我可以在未来调用取消,任务按预期取消。我需要能够通过调用“shutdownNow”方法来销毁我正在使用的执行程序服务,但是这个方法只是在线程上调用中断,这意味着我的自定义取消逻辑永远不会被调用。由于我的任务使用非阻塞套接字中断线程不起作用,因此我有自定义取消逻辑。
是否有一个简单的解决方案可以取消所有正在进行的任务。我尝试覆盖 ThreadPoolExecutor 上的关闭方法,但我无权访问工作人员列表。我希望能够通过关闭执行器来取消所有操作,因为它在多个地方用于提交任务,有没有简单的解决方案?
【问题讨论】:
-
是的,试过了,如果你看一下shutdownNow的实现,它只是调用thread.interupt,并没有委托给未来的cancel方法。
标签: java concurrency