JAVA-取消运行任务的ThreadPoolExecutor
我需要的是一种类似于Shutdownow的方法,但是,在这之后,我可以提交新任务。我的ThreadPoolExecutor将在程序执行期间接受随机数目的任务 为什么不创建您自己的展现这种行为的JAVA-取消运行任务的ThreadPoolExecutor,java,multithreading,threadpool,task,Java,Multithreading,Threadpool,Task,我需要的是一种类似于Shutdownow的方法,但是,在这之后,我可以提交新任务。我的ThreadPoolExecutor将在程序执行期间接受随机数目的任务 为什么不创建您自己的展现这种行为的ExecutorService?仅仅执行getQueue()并清除它还不够吗?如果确实需要尝试停止运行任务,则需要对ThreadPoolExecutor进行子类化,并从本质上重新实现shutdownNow(),但只复制向每个线程发送中断的位。请注意,这仍然不能保证您将实际导致它们立即停止并不再进行进一步计算
ExecutorService
?仅仅执行getQueue()并清除它还不够吗?如果确实需要尝试停止运行任务,则需要对ThreadPoolExecutor进行子类化,并从本质上重新实现shutdownNow(),但只复制向每个线程发送中断的位。请注意,这仍然不能保证您将实际导致它们立即停止并不再进行进一步计算。如果需要这样做,您将需要一种完全不同的方法。您可以获取每个提交的未来,将该未来存储在集合中,然后当您想要取消任务时,调用所有排队任务的Future.cancel()
使用此解决方案,Executor仍在运行,任何正在运行的任务都会被取消或在排队时不会运行。是否存在关闭当前ExecutorService并替换为新ExecutorService的选项?我已尝试重新实现shutdownNow(),但有些变量是私有的,没有它们,我无法完成我想要的任务…谢谢,关于您的解决方案,我唯一的问题是集合的大小,因为我的ThreadPoolExecutor将接收无限的任务。但有了一个映射和覆盖submit和afterExecute,我就可以只通过运行任务来维护我的集合。