使用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