问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

java 如何获得线程池中正在执行的线程数?

发布网友 发布时间:2022-05-18 21:03

我来回答

5个回答

热心网友 时间:2023-11-03 11:51

java中线程池的监控可以检测到正在执行的线程数。
通过线程池提供的参数进行监控。线程池里有一些属性在监控线程池的时候可以使用
taskCount:线程池需要执行的任务数量。
completedTaskCount:线程池在运行过程中已完成的任务数量。小于或等于taskCount。
largestPoolSize:线程池曾经创建过的最大线程数量。通过这个数据可以知道线程池是否满过。如等于线程池的最大大小,则表示线程池曾经满了。
getPoolSize:线程池的线程数量。如果线程池不销毁的话,池里的线程不会自动销毁,所以这个大小只增不+ getActiveCount:获取活动的线程数。
通过扩展线程池进行监控。通过继承线程池并重写线程池的beforeExecute,afterExecute和terminated方法,我们可以在任务执行前,执行后和线程池关闭前干一些事情。如监控任务的平均执行时间,最大执行时间和最小执行时间等。这几个方法在线程池里是空方法。如:
protected void beforeExecute(Thread t, Runnable r) { }

热心网友 时间:2023-11-03 11:51

Map map=Thread.getAllStackTraces();
System.out.println(map.size());
把这两句话放在需要的方法里里,运行就可以得到结果了。
下面这句话是java api的解释:
Thread类。
getAllStackTracespublic static Map<Thread,StackTraceElement[]> getAllStackTraces()返回所有活动线程的堆栈跟踪的一个映射。映射键是线程,而每个映射值都是一个 StackTraceElement 数组,该数组表示相应 Thread 的堆栈转储。返回的堆栈跟踪的格式都是针对 getStackTrace 方法指定的。
在调用该方法的同时,线程可能也在执行。每个线程的堆栈跟踪仅代表一个快照,并且每个堆栈跟踪都可以在不同时间获得。如果虚拟机没有线程的堆栈跟踪信息,则映射值中将返回一个零长度数组。
如果有安全管理器,则通过 RuntimePermission("getStackTrace") 权限和 RuntimePermission("modifyThreadGroup") 权限调用其 checkPermission 方法,查看是否可以获得所有线程的堆栈跟踪。

希望以上信息对你有帮助。

热心网友 时间:2023-11-03 11:52

System.out.println(Thread.currentThread().getThreadGroup().activeCount());
这段代码放到任意属于线程池的线程方法里,运行得到结果

热心网友 时间:2023-11-03 11:52

使用java代码的话,假如你对线程控制使用的是jdk自带的线程池的话,应该可以知道。其他的方式我就不是很清楚了。
假如你是需要监控java虚拟机线程运行状况的话,建议使用jdk自带的工具jvisualvm,有图形化的监控界面。

热心网友 时间:2023-11-03 11:53

Map map=Thread.getAllStackTraces();
System.out.println(map.size());
把这两句话放在需要的方法里里,运行就可以得到结果了。
下面这句话是java api的解释:
Thread类。
getAllStackTracespublic static Map<Thread,StackTraceElement[]> getAllStackTraces()返回所有活动线程的堆栈跟踪的一个映射。映射键是线程,而每个映射值都是一个 StackTraceElement 数组,该数组表示相应 Thread 的堆栈转储。返回的堆栈跟踪的格式都是针对 getStackTrace 方法指定的。
在调用该方法的同时,线程可能也在执行。每个线程的堆栈跟踪仅代表一个快照,并且每个堆栈跟踪都可以在不同时间获得。如果虚拟机没有线程的堆栈跟踪信息,则映射值中将返回一个零长度数组。
如果有安全管理器,则通过 RuntimePermission("getStackTrace") 权限和 RuntimePermission("modifyThreadGroup") 权限调用其 checkPermission 方法,查看是否可以获得所有线程的堆栈跟踪。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
苹果电脑电池充不进电苹果电脑充不进去电是怎么回事 苹果电脑不充电没反应苹果电脑充电指示灯不亮充不了电怎么办 狗狗更加忠诚护家、善解人意,养一只宠物陪伴自己,泰迪能长多大... 描写泰迪狗的外形和特点的句子 国外留学有用吗 花钱出国留学有用吗 !这叫什么号 百万医疗赔付后是否可以续保 前一年理赔过医疗险还能续保吗? 医疗住院险理赔后还能购买吗? 如何删除chrome的插件 请教各位前辈Spring的线程池和JDK的线程池的区别 chrome插件怎么同步 窗帘罗马杆和轨道杆哪个更实用 本次改版后和平精英两个无法切换了,每次登录都是默认主号登录,分身登录不了,麻烦解决!_百度问一问 Java编程:jdk提供的线程池简述及api文档阅读 赤水市星飞工艺苑怎么样? 郑州2019年残保金如何计算,怎样申报,都需要什么手续没有安排残疾人 贵州邦达煤业有限公司怎么样? 新邵王家坪村风景区能进去吗 你好请问 身份证上地址贵州省赤水市公园路1号1单元附12号的应该去哪里的居委会开失业证明想要详细地_百度问一问 快手短视频那里的链接可以做吗? 华县有哪些镇? 新泰市天鹅王日化有限公司怎么样? 成都市简阳市赤水街道方家寺社区九组有没有在拆迁范围内? 加水站旁边是垃圾中转站,这样合理吗? 钟祥市中视传媒有限公司怎么样? 国内垃圾压块机有哪些种类 钟祥广播电视台怎么样? 世界上最大游轮上的乘客达6600名,他们产生的垃圾是如何处理的? threadpoolexecutor 在jdk哪个地方 对于OpenJDK而言,是不是每个Java线程都对应一个执行引擎线程 1至7档双开门冰箱开多少最弱 我想买一个双开门冰箱,请问哪种牌子好 2000年后步行者怎么这么多进步最快球员,从杰伦罗斯,到奥尼尔,再到格兰杰 劲爆体育播NBA精彩瞬间2000年湖人对阵步行者队的歌曲叫什么 2000年NBA总冠军是哪队 什么电脑适合玩游戏,很流畅的那种 本人想装一部电脑?玩游戏很流畅的电脑 我家电脑玩什么游戏流畅? 我的电脑配置怎么样,能流畅玩大型游戏吗? 配一台可以流畅玩以下游戏的电脑 28周思维彩超!能看出男孩女孩吗?第一胎男女都想要顺便给取个名字 赵久毅的老婆是谁 使人受益一生的44种思维 逻辑思维,26,28,()30。()应该是什么数 我不理解这个思维。就28×3是什么意思 物理中的推理法是什么 做数学27,28题时,方法心中有很多,思维很混乱怎么办 男生该怎么提升自己才能变得更好更优秀呢?