我需要的是一个类似于shutdownNow的方法,但是,之后能够提交新的任务。我的ThreadPoolExecutor将在程序执行期间接受随机数量的任务。
答案 0 :(得分:8)
您可以获取每个提交的Future,将Future存储在集合中,然后当您想要取消任务时,调用所有排队任务的future.cancel()。
使用此解决方案,Exectuor仍在运行,任何正在运行的任务都会被取消,或者如果它们已排队,则不会运行。
答案 1 :(得分:0)
为什么不创建自己展示此行为的ExecutorService
?
答案 2 :(得分:0)
查看getQueue()方法。我很确定清除它会起作用(但不会测试)。
答案 3 :(得分:-1)
仅仅执行getQueue()并清除它是不够的?如果您确实需要尝试停止运行任务,则需要继承ThreadPoolExecutor并实质上重新实现shutdownNow(),但只复制向每个线程发送中断的位。请注意,这仍然不能保证您实际上会立即停止并且不做进一步的计算。如果你需要这样做,你需要一种完全不同的方法。