使用ThreadPoolExecutor的活动任务数

我正在使用ThreadPoolExecutor在Java应用程序中执行任务。我有一个要求,我想在任何时间获取执行者队列中队列中活动任务的数量。我查看了ThreadPoolExecutor

的javadoc,发现了两个相关方法:getTaskCount()getCompletedTaskCount()

根据文档,我可以分别通过上述两种方法获得计划任务和完成任务的数量。但是我找不到能够在任何时间获取队列中活动任务数量的解决方案。我可以做类似的事情:

getTaskCount() = getCompletedTaskCount() + failed tasks + active tasks

但是失败的任务数量不能直接获得以进行预期的计算。

我在这里想念什么吗?

回答:

我认为您无需通过尝试使用的计算来了解失败的计数。

long submitted = executor.getTaskCount();

long completed = executor.getCompletedTaskCount();

long notCompleted = submitted - completed; // approximate

将(大约)足够。


或者,你可以用getQueue()size()

int queued = executor.getQueue().size();

int active = executor.getActiveCount();

int notCompleted = queued + active; // approximate

该答案假设您要查找“尚未完成”的计数。 您的问题自相矛盾,因此我不确定您要问什么。如果这不正确,请回复我对您问题的评论,我将相应地更新此答案。

以上是 使用ThreadPoolExecutor的活动任务数 的全部内容, 来源链接: utcz.com/qa/429668.html

回到顶部