首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何移除ExecutorService中所有正在运行和排队的任务,并向其中添加新的任务?

如何移除ExecutorService中所有正在运行和排队的任务,并向其中添加新的任务?
EN

Stack Overflow用户
提问于 2019-10-08 18:28:06
回答 1查看 66关注 0票数 0

如何移除ExecutorService中所有正在运行和排队的任务,并向其中添加新的任务?

每一轮都有一个ExecutorService来处理新的任务。

如果在此轮中没有完成任务,请删除这些旧任务,并在下一轮中添加新的即将到来的任务。ExecutorService将在下一轮被重用,因此ExecutorService无法关闭。

有人知道怎么做吗?

EN

回答 1

Stack Overflow用户

发布于 2019-10-08 18:34:38

如何删除ExecutorService中所有正在运行和排队的任务,并向其中添加新任务?

添加很简单-只需调用submit即可。从另一方面来说,删除就比较棘手了--你可以调用shutdownNow。Javadoc:

尝试停止所有正在执行的任务,停止正在等待的任务的处理,并返回等待执行的任务列表。

然而,shutdownNow()实际上会关闭executor,因此它将拒绝接受新任务。另外,请注意Javadoc中的单词“尝试”。一旦任务开始执行,就不能保证它可以很容易地停止。任务可以忽略interrupt并继续运行。

如果您想要更精细的控制,请不要使用ExecutorService。相反,可以尝试实现ExecutorServiceThreadPoolExecutor。在ThreadPoolExecutor中,您可以直接访问Runnables队列。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58284559

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档