gpt4 book ai didi

java - ThreadPoolExecutor#getActiveCount() 到底有多 'approximate'?

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:55:25 34 4
gpt4 key购买 nike

ThreadPoolExecutor#getActiveCount() 的 javadocs假设该方法“返回正在执行任务的线程的大致数量。”

是什么让这个数字是近似值而不是精确值?它会多报还是少报 Activity 线程?

方法如下:

/**
* Returns the approximate number of threads that are actively
* executing tasks.
*
* @return the number of threads
*/
public int getActiveCount() {
final ReentrantLock mainLock = this.mainLock;
mainLock.lock();
try {
int n = 0;
for (Worker w : workers)
if (w.isLocked())
++n;
return n;
} finally {
mainLock.unlock();
}
}

最佳答案

该方法获取工作人员列表并对被锁定的工作人员进行计数。

当计数到达列表末尾时,之前计数的一些 worker 可能已经完成。 (或者一些未使用的 worker 可能被分配了一项任务。)

但作为客户,您不应该依赖这些知识,而只是依赖它是尽力而为的近似值这一事实。请注意,这种“不准确”不是草率实现的结果,它是每个真正的多线程系统所固有的。在这样的系统中,没有“现在”的全局时刻。即使你停止所有的 worker 来统计它们,当你返回结果时,它也可能不准确。

关于java - ThreadPoolExecutor#getActiveCount() 到底有多 'approximate'?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24810744/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com