java 排队任务_java – 删除ThreadPoolExecutor的所有排队任务

我有一个关于

ThreadPoolExecutor的这个相当简单的问题。我有以下情况:我必须从队列中使用对象,为他们创建适当的工作任务并将其提交到ThreadPoolExecutor。这很简单但是在关闭情况下,许多工作人员可能排队执行。因为这些任务之一可能运行了一个小时,而且我想要相对快速地关闭该应用程序,我想从ThreadPoolExecutor中丢弃所有排队的任务,而已经处理的任务应该正常完成。

ThreadPoolExecutor文档具有remove()方法,但仅允许删除特定任务。 purge()只适用于已经取消的未来任务。我的想法是清除队列中所有排队的任务。 ThreadPoolExecutor提供对此内部队列的访问,但文档规定:

Method getQueue() allows access to the

work queue for purposes of monitoring

and debugging. Use of this method

for any other purpose is strongly

discouraged.

所以抓住这个队列并清除它不是一个选择。此外,该文档的这段代码说:

Two supplied methods,

remove(java.lang.Runnable) and purge()

are available to assist in storage

reclamation when large numbers of

queued tasks become cancelled.

怎么样?当然,我可以维护我提交给执行程序的所有任务的列表,在关闭的情况下,我会遍历所有条目,并使用remove()方法将其从ThreadPoolExecutor中删除,但…来了,这是一个浪费记忆和麻烦维护这个清单。 (例如,删除已执行的任务)

我感谢任何提示或解决方案!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值