线程池监控

Posted 服务端技术杂谈

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了线程池监控相关的知识,希望对你有一定的参考价值。

系统中大量使用线程池,有必要对线程池进行监控。

可以监控如下指标:

  • 可以检测到正在执行的线程数。

  • 可以检测任务队列堆积任务数。

  • 可以检测活动线程数。

  • 可以检测最大线程数。

具体如下:

  • queue.size:获取线程池任务队列数量。

  • taskCount:线程池需要执行的任务数量。

  • completedTaskCount:线程池在运行过程中已完成的任务数量。小于或等于taskCount。

  • largestPoolSize:线程池曾经创建过的最大线程数量。通过这个数据可以知道线程池是否满过。如等于线程池的最大大小,则表示线程池曾经满了。

  • getPoolSize:线程池的线程数量。如果线程池不销毁的话,池里的线程不会自动销毁,所以这个大小只增不减。

  • getActiveCount:获取活动的线程数。

通过扩展线程池进行监控,通过继承线程池并重写线程池的beforeExecute,afterExecute和terminated方法,我们可以在任务执行前,执行后和线程池关闭前干一些事情。如监控任务的平均执行时间,最大执行时间和最小执行时间等。

这几个方法在线程池里是空方法。如: protected void beforeExecute(Thread t, Runnable r) { }


以上是关于线程池监控的主要内容,如果未能解决你的问题,请参考以下文章

Java线程池监控小结

dubbo-线程池监控

遇见这么刁钻的面试题怎么办???Java怎么利用线程工厂监控线程池

java线程池监控

SpringBoot-技术专区-实战方案-应用监控线程池

线程池监控设计