gpt4 book ai didi

java - 获取 FinalizedDeleatedExecutorService 的状态

转载 作者:行者123 更新时间:2023-12-02 11:16:15 26 4
gpt4 key购买 nike

我正在使用此代码在 java 中获取 ExecutorService:

this.exec = Executors.newSingleThreadExecutor();

现在我想知道它已经处理了多少个作业,队列中有多少个作业(最重要的是!),以及基本上我可以获得的所有信息。但是普通的ExecutorService没有这个信息。但根据the answer in this question ,我可以将其类型转换为 ThreadPoolExecutor ,因为这就是它返回的内容。嗯,这听起来很容易……但是有一个问题。 我的机器不返回ThreadPoolExecutor!

相反,我得到了一个 java.util.concurrent.Executors$FinalizedDeleatedExecutorService ,当尝试对其进行类型转换时,这是不可能的,因为该类不可见。

那么我怎样才能找到我的ExecutorService的状态?

如果您非常好奇并且想知道我使用 ExecutorService 做什么(如果这很重要),请阅读 this question我之前问过。它基本上用于 SQL 语句。

最佳答案

选项1

您可以创建自己的 ThreadPoolExecutor - 这就是 newFixedThreadPool 的作用:

ExecutorService executor = new ThreadPoolExecutor(nThreads, nThreads,
0L, TimeUnit.MILLISECONDS,
new LinkedBlockingQueue<Runnable>());

然后,您可以保留对队列的引用以查看队列的满度。您甚至可以传递修改后的版本,该版本保留收到的作业数量的计数器。

选项2

您可以使用an ExecutorCompletionService这将帮助您了解任务何时完成 - 然后您可以计算您已提交的作业数/已完成的作业数。

关于java - 获取 FinalizedDeleatedExecutorService 的状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13831398/

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