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