gpt4 book ai didi

java - 具有运行任务数的 ExecutorService

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:21:38 24 4
gpt4 key购买 nike

我想获取已提交给执行程序服务但尚未完成(即当前正在运行/Activity 或排队)的任务数。执行器服务没有为此内置的方法。

((ThreadPoolExecutor) executorService).getActiveCount()

这“返回正在执行任务的线程的大概数量。”

这是维护可变计数器的有效替代方法吗?为什么是近似值?我真的会更好地维护柜台吗?为什么执行器服务没有为此内置的方法?

最佳答案

让我们看一下这个任务:只有停止系统、计数、返回、启动系统,才能告诉你确切的数字。否则:在计数期间,线程可能会开始和结束,因此该数字是一个近似值。

查看 OpenJDK8 中的实现:

1812    public int More ...getActiveCount() {
1813 final ReentrantLock mainLock = this.mainLock;
1814 mainLock.lock();
1815 try {
1816 int n = 0;
1817 for (Worker w : workers)
1818 if (w.isLocked())
1819 ++n;
1820 return n;
1821 } finally {
1822 mainLock.unlock();
1823 }
1824 }

实现很简单,但这就像数 Ant 而不杀死它们:你数的时候它们会来来去去。

关于java - 具有运行任务数的 ExecutorService,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28304851/

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