Java线程池运行状态监控实现解析
2019-12-02 18:12
633 查看
在实际开发过程中,在线程池使用过程中可能会遇到各方面的故障,如线程池阻塞,无法提交新任务等。
如果你想监控某一个线程池的执行状态,线程池执行类 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); } }
以上就是本文的全部内容,希望对大家的学习有所帮助
您可能感兴趣的文章:
相关文章推荐
- spring通过annotation注解注册MBean到JMX实现监控java运行状态
- spring通过annotation注解注册MBean到JMX实现监控java运行状态
- Java 实现程序运行状态监控 之我的思路(守护进程)
- Java实现对程序运行状态的监控
- spring通过annotation注解注册MBean到JMX实现监控java运行状态
- 使用java自带工具监控jvm运行状态
- 实现Cacti监控nginx运行状态
- Java实现监控多个线程状态的实现
- 并发编程(十三)—— Java 线程池 实现原理与源码深度解析 之 Executors(三)
- Java实现监控多个线程状态的实现
- Java实现终止线程池中正在运行的定时任务
- Java实现监控多个线程状态的实现
- java基础之:多线程实现/启动/状态+同步+线程池
- 关于监控线程池运行状态的一些api
- C#实现软件监控外部程序运行状态的方法
- Java实现监控多个线程状态的简单实例
- 自定义异步线程池,实现异步请求以及监控当前线程运行情况
- 设计模式解析和实现(C++, java)之二十--状态(state)模式
- java实现自动登录无验证码登录后台并保持会话状态持续监控固定页面信息。
- C#实现软件监控外部程序运行状态的方法