大家好,java監(jiān)控相信很多的網(wǎng)友都不是很明白,包括如何監(jiān)控Java線程池運行狀態(tài)也是一樣,不過沒有關(guān)系,接下來就來為大家分享關(guān)于java監(jiān)控和如何監(jiān)控Java線程池運行狀態(tài)的一些知識點,大家可以關(guān)注收藏,免得下次來找不到哦,下面我們開始吧!
本文目錄
推薦skywalking,原因有以下幾點:
1.零侵入,通過javaagent集成,無需修改任何業(yè)務(wù)代碼。
2.依賴環(huán)境簡單,只需要elasticsearch和jdk。
3.近實時監(jiān)控,分析,聚合采集數(shù)據(jù)速度非常快。
4.資源占用少,agent的cpu占用率很低
5.可擴展性,以插件的形式擴展功能。已經(jīng)提供了常用中間件和框架的插件,如果不能滿足需求,可以自定義插件方式擴展。
6.社區(qū)比較活躍,現(xiàn)已經(jīng)貢獻給Apache了
如果想監(jiān)控一個線程池的執(zhí)行狀態(tài),線程池執(zhí)行類ThreadPoolExecutor給出了相關(guān)的API,能實時獲取線程池的以下信息:
當前活動線程數(shù)
正在排隊中的線程數(shù)
已經(jīng)執(zhí)行完成的線程數(shù)
總線程數(shù)
……
總線程數(shù)=排隊線程數(shù)+活動線程數(shù)+執(zhí)行完成的線程數(shù)
1.代碼示例創(chuàng)建ThreadPoolExecutor實例:
通過ThreadPoolExecutor的API來獲取線程運行信息:
2.代碼運行分析線程池提交了100000個任務(wù),但同時只有50個線程在工作,我們每間隔3秒來獲取當前線程池的運行狀態(tài)。
2.1第一次程序輸出
當前排隊線程數(shù):99950
當前活動線程數(shù):50
執(zhí)行完成線程數(shù):0
總線程數(shù)(排隊線程數(shù)+活動線程數(shù)+執(zhí)行完成線程數(shù)):100000
2.2第二次程序輸出
當前排隊線程數(shù):99800
當前活動線程數(shù):50
執(zhí)行完成線程數(shù):150
總線程數(shù)(排隊線程數(shù)+活動線程數(shù)+執(zhí)行完成線程數(shù)):100000
2.3最后輸出
當前排隊線程數(shù):0
當前活動線程數(shù):0
執(zhí)行完成線程數(shù):100000
總線程數(shù)(排隊線程數(shù)+活動線程數(shù)+執(zhí)行完成線程數(shù)):100000
因此,了解清楚這些API的使用方法后,我們想監(jiān)控線程池的狀態(tài)就非常方便了。
歡迎關(guān)注筆者,持續(xù)分享有價值的優(yōu)質(zhì)架構(gòu)文章。
java監(jiān)控和如何監(jiān)控Java線程池運行狀態(tài)的問題分享結(jié)束啦,以上的文章解決了您的問題嗎?歡迎您下次再來哦!
搜浪信息科技發(fā)展(上海)有限公司 備案號:滬ICP備17005676號