如何移除ExecutorService中所有正在运行和排队的任务,并向其中添加新的任务?
每一轮都有一个ExecutorService来处理新的任务。
如果在此轮中没有完成任务,请删除这些旧任务,并在下一轮中添加新的即将到来的任务。ExecutorService将在下一轮被重用,因此ExecutorService无法关闭。
有人知道怎么做吗?
发布于 2019-10-08 18:34:38
如何删除ExecutorService中所有正在运行和排队的任务,并向其中添加新任务?
添加很简单-只需调用submit即可。从另一方面来说,删除就比较棘手了--你可以调用shutdownNow。Javadoc:
尝试停止所有正在执行的任务,停止正在等待的任务的处理,并返回等待执行的任务列表。
然而,shutdownNow()实际上会关闭executor,因此它将拒绝接受新任务。另外,请注意Javadoc中的单词“尝试”。一旦任务开始执行,就不能保证它可以很容易地停止。任务可以忽略interrupt并继续运行。
如果您想要更精细的控制,请不要使用ExecutorService。相反,可以尝试实现ExecutorService的ThreadPoolExecutor。在ThreadPoolExecutor中,您可以直接访问Runnables队列。
https://stackoverflow.com/questions/58284559
复制相似问题