java - 如何删除 ExecutorService 中所有正在运行和排队的任务并向其中添加新任务?
问题描述
如何删除所有正在运行和排队的任务ExecutorService
并向其中添加新任务?
每一轮都有一个ExecutorService
新的任务来处理。
如果本轮任务没有完成,则删除这些旧任务并在下一轮添加新任务。ExecutorService
将在下一轮重复使用,因此ExecutorService
无法关闭。
有人知道该怎么做吗?
解决方案
如何删除 ExecutorService 中所有正在运行和排队的任务并向其中添加新任务?
添加很容易 - 只需调用submit
. 另一方面,移除比较棘手——你可以跟注shutdownNow
。文档:
尝试停止所有正在执行的任务,停止等待任务的处理,并返回等待执行的任务列表。
但是shutdownNow()
实际上会关闭执行程序,因此它将拒绝接受新任务。另外,请注意 Javadoc 中的单词尝试。一旦任务开始执行,就不能保证它可以很容易地停止。任务可以忽略interrupt
并继续运行。
如果您想要更精细的控制,请不要使用ExecutorService
. 相反,请尝试ThreadPoolExecutor
实现ExecutorService
. 在 aThreadPoolExecutor
中,您可以直接访问 Runnables 队列。
推荐阅读
- javascript - 将 CSV 转换为带有标头的 JSON
- c# - 如何引用多列列表<>中的列并在 FindControl 中使用列值
- r - 有没有办法强制 ode() [deSolve-R 包] 在 ode 函数的每个集成步骤中提供输出
- c - 使用 beaglebone Black SPI 在 DIP203-6 LCD 屏幕上显示字符
- wordpress - 将 NPM 模块导入 Wordpress ReactJS 插件
- python - 如果满足某些条件,将行转换为 pandas 数据框的列
- python - 如何在 Matplotlib 中与线程一起执行动画?
- matrix - 当它是矩阵时,EMGU imshow不显示图像
- r - 特征选择的方差分析
- r - 基于增加/减少趋势的子集向量