首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在executor服务中获取队列中的任务数?

如何在executor服务中获取队列中的任务数?
EN

Stack Overflow用户
提问于 2017-09-03 05:51:21
回答 2查看 5.4K关注 0票数 8

所以我使用executorservice来创建一个线程池。

代码语言:javascript
运行
复制
ExecutorService executor = Executors.newSingleThreadExecutor();

我正在尝试访问线程池队列中的任务数。我发现没有任何方法可以实现这一点。我知道有一些方法可以在threadpoolexecutor中获取队列大小,但是我如何使用executorservice对象来实现这一点呢?

就像我说的,如果我像这样创建了一个ThreadpoolExecutor,我就可以获得队列信息

代码语言:javascript
运行
复制
ThreadPoolExecutor tpExecutor =  new ThreadPoolExecutor(1, 1, 0L, TimeUnit.MILLISECONDS,new LinkedBlockingQueue<Runnable>());

我知道我可以使用tpExecutor.queue.size()来获取线程池队列中的任务数。但目前我已经使用Executor Service声明了我的线程池。我该怎么做呢?如果人们可以编写代码并进行演示,那将是值得欣赏的。

EN

回答 2

Stack Overflow用户

发布于 2019-03-29 08:29:41

我认为这应该行得通:

代码语言:javascript
运行
复制
    ThreadPoolExecutor threadPoolExecutor = (ThreadPoolExecutor) this.executorService;
    int activeCount = threadPoolExecutor.getActiveCount();
    long taskCount = threadPoolExecutor.getTaskCount();
    long completedTaskCount = threadPoolExecutor.getCompletedTaskCount();
    long tasksToDo = taskCount - completedTaskCount - activeCount;
票数 2
EN

Stack Overflow用户

发布于 2017-09-27 01:32:48

您可以将此转换为ThreadPoolExecutor。

ThreadPoolExecutor ex=(ThreadPoolExecutor)executor;ex.getQueue().size();

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46018534

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档