获取线程池中任务执行数量

通过线程池进行任务处理,有时我们需要知道线程池中任务的执行状态。

通过ThreadPoolExecutor的相关API实时获取线程数量,排队任务数量,执行完成线程数量等信息。

实例

private static ExecutorService es = new ThreadPoolExecutor(50, 100, 0L, TimeUnit.MILLISECONDS,new LinkedBlockingQueue<Runnable>(100000));public static void main(String[] args) throws Exception
 {for (int i = 0; i < 100000; i++) {
    es.execute(() -> {
        System.out.print(1);        try{
    Thread.sleep(1000);
        } 
        catch(InterruptedException e) {
                e.printStackTrace();
            }
        });

    }

ThreadPoolExecutor tpe = ((ThreadPoolExecutor) es);while (true) {
    System.out.println();    int queueSize = tpe.getQueue().size();
    System.out.println("当前排队线程数:"+ queueSize);    int activeCount = tpe.getActiveCount();
    System.out.println("当前活动线程数:"+ activeCount);    
    long completedTaskCount = tpe.getCompletedTaskCount();
    System.out.println("执行完成线程数:"+ completedTaskCount);    
    long taskCount = tpe.getTaskCount();
    System.out.println("总线程数:"+ taskCount);

    Thread.sleep(3000);
    }
}

比如我们每隔3秒获取一次执行状态信息,总共有50个工作线程。

第一次输出:

当前排队线程数:
99950

当前活动线程数:
50

执行完成线程数:
0

总线程数(排队线程数 + 活动线程数 +  执行完成线程数):
100000

第二次输出:

当前排队线程数:
99800

当前活动线程数:
50

执行完成线程数:
150

总线程数(排队线程数 + 活动线程数 +  执行完成线程数):
100000

说明通过API可以获取不断变化的线程及线程任务数量了。

© 著作权归作者所有

原文发布于微信公众号 - 服务端技术杂谈(ITIBB2014)

原文发表时间:2018-05-06

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏章鱼的慢慢技术路

Linux操作系统配置Go语言编程环境

之前一直在windows下写Go,现在工作环境切换至Linux下,因此写下此文,记录安装Go环境的过程。

1033
来自专栏Linux 杂货铺

如何使用UFW配置防火墙

UFW(Uncomplicated FireWall)是Arch Linux、Debian或Ubuntu中管理防火墙规则的前端工具。UFW通常在命令行环境下使用...

4314
来自专栏blackpiglet

使用 Prometheus 监控 Ceph

本文是在 Ubuntu 16.04 最新版基础上安装 Prometheus 监控系统,Ceph 版本为 Luminous 12.2.8。

2764
来自专栏hbbliyong

应用TortoiseGit为github账号添加SSH keys,解决pull总是提示输入密码的问题

每次同步或者上传代码到githun上的代码库时,需要每次都输入用户名和密码,这时我们设置一下SSH key就可以省去这些麻烦了。若果使用TortoiseGit作...

3818
来自专栏linux驱动个人学习

推挽输出和开漏输出的区别

推挽输出,可以输出高电平,连接数字器件: 输出0时,N-MOS导通,P-MOS高阻,输出0。 输出1时,N-MOS高阻,P-MOS高阻,输出1;(不需要外部上拉...

3164
来自专栏张戈的专栏

利用 HSTS 安全协议柔性解决全站 HTTPS 的兼容性问题

目前,很多站都开始实现HTTPS了,而且其中的大部分强迫症站长还会开启强制HTTPS机制,对于网站的HTTP请求全部301跳转到HTTPS,从而实现全站HTTP...

3880
来自专栏康怀帅的专栏

Golang 简单使用

官方网站:https://golang.org/ GitHub:https://github.com/golang 变量 $GOROOT go 安装路径 $GO...

2715
来自专栏nummy

sublime3 配置go开发环境

在sublime下选择【工具菜单】,选择【编译系统】,继续选择【新编译系统】,在弹出的文件内写入如下代码:

671
来自专栏王二麻子IT技术交流园地

五、VueJs 填坑日记之将接口用webpack代理到本地

上一篇博文,我们已经顺利的从cnodejs.org请求到了数据,但是大家可以注意到我们的/src/api/index.js的第一句就是: // 配置API接口地...

59610
来自专栏菜鸟程序员

开启HSTS让浏览器强制跳转HTTPS访问

2683

扫码关注云+社区