文档章节

Java中的线程池的集中管理和监控

孟飞阳
 孟飞阳
发布于 2017/05/20 09:24
字数 404
阅读 58
收藏 0

 

背景

需要将项目中的线程池统一管理,并且提供统一的监控。不至于等到程序崩溃的时候才发现。

思路

1、所有的线程池统一管理,写死在代码里,或者提供一个统一的配置文件。使用的时候,通过getbykey来获取。

2、所有的线程池设置一个name和一个允许堆积的最大数量,一旦超过这个数量,发送报警邮件,给出哪个线程池堆积了多少。

实现

首先定义自己封装过一次的线程池实体。

Java中的线程池的集中管理和监控

然后,我们再新建一个类LocalExecutorManager,用于将线程池进行集中化管理,并且启动监控线程。监控间隔为60秒一次。如果需要的话,可以自己改。

Java中的线程池的集中管理和监控

然后我们再来看看监控的代码:

Java中的线程池的集中管理和监控

最后,我们用junit来测试一下效果:

Java中的线程池的集中管理和监控

得出的结果如下:

Java中的线程池的集中管理和监控

 

总结

好处是我们把所有的线程池集中的管理起来,不允许在代码中随意新增线程池。并且提供了统一的监控,当程序出现异常时,我们能及早的发现并解决问题。

当然,单独用一个线程来监控线程池,这个本身也是一种消耗,但是个人觉得这个消耗是值得的。

同时我们也对线程池的功能进行了阉割,但是这个想要放开应该也不难,自己去实现下其他3种线程池的监控即可。

本文转载自:转帖

孟飞阳
粉丝 213
博文 1012
码字总数 552718
作品 5
朝阳
个人站长
私信 提问
基于 JVMTI 实现 Java 线程的监控

随着多核 CPU 的日益普及,越来越多的 Java 应用程序使用多线程并行计算来充分发挥整个系统的性能。多线程的使用也给应用程序开发人员带来了巨大的挑战,不正确地使用多线程可能造成线程死锁...

红薯
2009/12/15
1K
1
深入理解JVM虚拟机12:JVM性能管理神器VisualVM介绍与实战

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/a724888/article/details/79220184 Java虚拟机性能管理神器 - VisualVM(1) 简介 - JVM轻量级监控分析神器 ...

你的猫大哥
2018/01/31
0
0
Java虚拟机监控指标及监控配置

版权声明:本文为博主原创文章,未经博主允许不得转载。欢迎访问我的博客 https://blog.csdn.net/smooth00/article/details/70229653 主要是对Java虚拟机(JVM)的远程监视,如jdk自带的工具j...

smooth00
2017/04/28
0
0
Java虚拟机(JVM)(自动内存管理机制)

简介 Java虚拟机(JVM)是Java应用的运行环境,从一般意义上来讲,JVM是通过规范来定义的一个虚拟的计算机,被设计用来解释执行从Java源码编译而来的字节码。 体系结构 JVM主要有子系统和内存...

亚特兰缇斯
2015/03/05
0
0
数据库连接池clearpool(java实现)详解

clearpool的maven项目托管在https://github.com/xionghuiCoder/clearpool,同时也可以在http://www.oschina.net/p/clearpool上了解它的简单介绍。 首先大家可能会问,现在开源社区已经有了很...

xionghuiCoder
2014/08/20
0
16

没有更多内容

加载失败,请刷新页面

加载更多

texlive安装

Installing to: D:/bin/texlive/texlive/2019Installing [001/307, time/total: ??:??/??:??]: adobemapping [2130k]Installing [002/307, time/total: 00:03/08:57]: ae [84k]Installing......

MtrS
25分钟前
2
0
运维规范

命名规范 发布流程 监控告警 故障定位 状态 日志 监控

以谁为师
今天
2
0
约瑟夫环(报数游戏)java实现

开端 公司组织考试,一拿到考题,就是算法里说的约瑟夫环,仔细想想 以前老师将的都忘了,还是自己琢磨把~ package basic.gzy;import java.util.Iterator;import java.util.LinkedList;...

无极之岚
今天
3
0
Kernel字符设备驱动框架

Linux设备分为三大类:字符设备,块设备和网络设备,这三种设备基于不同的设备框架。相较于块设备和网络设备,字符设备在kernel中是最简单的,也是唯一没有基于设备基础框架(device结构)的...

yepanl
今天
3
0
Jenkins 中文本地化的重大进展

本文首发于:Jenkins 中文社区 我从2017年开始,参与 Jenkins 社区贡献。作为一名新成员,翻译可能是帮助社区项目最简单的方法。 本地化的优化通常是较小的改动,你无需了解项目完整的上下文...

Jenkins中文社区
昨天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部