日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術(shù)文章
文章詳情頁

教你如何監(jiān)控 Java 線程池運(yùn)行狀態(tài)的操作(必看)

瀏覽:126日期:2022-08-16 09:20:54

之前寫過一篇 Java 線程池的使用介紹文章《線程池全面解析》,全面介紹了什么是線程池、線程池核心類、線程池工作流程、線程池分類、拒絕策略、及如何提交與關(guān)閉線程池等。

但在實際開發(fā)過程中,在線程池使用過程中可能會遇到各方面的故障,如線程池阻塞,無法提交新任務(wù)等。

如果你想監(jiān)控某一個線程池的執(zhí)行狀態(tài),線程池執(zhí)行類 ThreadPoolExecutor 也給出了相關(guān)的 API, 能實時獲取線程池的當(dāng)前活動線程數(shù)、正在排隊中的線程數(shù)、已經(jīng)執(zhí)行完成的線程數(shù)、總線程數(shù)等。

總線程數(shù) = 排隊線程數(shù) + 活動線程數(shù) + 執(zhí)行完成的線程數(shù)

下面給出一個線程池使用示例,及教你獲取線程池狀態(tài)

private static ExecutorService es = new ThreadPoolExecutor(50, 100, 0L, TimeUnit.MILLISECONDS, new LinkedBlockingQueue<Runnable>(100000));public static void main(String[] args) throws Exception { for (int i = 0; i < 100000; i++) { es.execute(() -> { System.out.print(1); try { Thread.sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); } }); } ThreadPoolExecutor tpe = ((ThreadPoolExecutor) es); while (true) { System.out.println(); int queueSize = tpe.getQueue().size(); System.out.println('當(dāng)前排隊線程數(shù):' + queueSize); int activeCount = tpe.getActiveCount(); System.out.println('當(dāng)前活動線程數(shù):' + activeCount); long completedTaskCount = tpe.getCompletedTaskCount(); System.out.println('執(zhí)行完成線程數(shù):' + completedTaskCount); long taskCount = tpe.getTaskCount(); System.out.println('總線程數(shù):' + taskCount); Thread.sleep(3000); }}

線程池提交了 100000 個任務(wù),但同時只有 50 個線程在執(zhí)行工作,我們每陋 3 秒來獲取當(dāng)前線程池的運(yùn)行狀態(tài)。

第一次程序輸出:

當(dāng)前排隊線程數(shù):99950

當(dāng)前活動線程數(shù):50

執(zhí)行完成線程數(shù):0

總線程數(shù)(排隊線程數(shù) + 活動線程數(shù) + 執(zhí)行完成線程數(shù)):100000

第二次程序輸出:

當(dāng)前排隊線程數(shù):99800

當(dāng)前活動線程數(shù):50

執(zhí)行完成線程數(shù):150

總線程數(shù)(排隊線程數(shù) + 活動線程數(shù) + 執(zhí)行完成線程數(shù)):100000

活動線程數(shù)和總線程數(shù)是不變的,排隊中的線程數(shù)和執(zhí)行完成的線程數(shù)不斷在變化,

直到所有任務(wù)執(zhí)行完畢,最后輸出:

當(dāng)前排隊線程數(shù):0

當(dāng)前活動線程數(shù):0

執(zhí)行完成線程數(shù):100000

總線程數(shù)(排隊線程數(shù) + 活動線程數(shù) + 執(zhí)行完成線程數(shù)):100000

這樣,你了解了這些 API 的使用方法,你想監(jiān)控線程池的狀態(tài)就非常方便了。

補(bǔ)充:Java線程及Jvm監(jiān)控工具

Java線程狀態(tài)線程的五種狀態(tài)

* 新建:new(時間很短)

* 運(yùn)行:runnable

* 等待:waitting(無限期等待),timed waitting(限期等待)

* 阻塞:blocked

* 結(jié)束:terminated(時間很短)

教你如何監(jiān)控 Java 線程池運(yùn)行狀態(tài)的操作(必看)

Jvm監(jiān)控工具一、jstack

介紹:

jstack用于打印出給定的java進(jìn)程ID或core file或遠(yuǎn)程調(diào)試服務(wù)的Java堆棧信息。

如果是在64位機(jī)器上,需要指定選項'-J-d64',Windows的jstack使用方式只支持以下的這種方式:jstack [-l] pid

如果java程序崩潰生成core文件,jstack工具可以用來獲得core文件的java stack和native stack的信息,從而可以輕松地知道java程序是如何崩潰和在程序何處發(fā)生問題。

另外,jstack工具還可以附屬到正在運(yùn)行的java程序中,看到當(dāng)時運(yùn)行的java程序的java stack和native stack的信息, 如果現(xiàn)在運(yùn)行的java程序呈現(xiàn)hung的狀態(tài),jstack是非常有用的。

使用:

1、查看運(yùn)行程序的進(jìn)程號

教你如何監(jiān)控 Java 線程池運(yùn)行狀態(tài)的操作(必看)

2、jstack dump當(dāng)前線程狀態(tài)

教你如何監(jiān)控 Java 線程池運(yùn)行狀態(tài)的操作(必看)

3、根據(jù)當(dāng)前抓取到的信息進(jìn)行進(jìn)一步的分析

二、jvisualvm

jdk自帶有個jvisualvm工具、該工具是用來監(jiān)控java運(yùn)行程序的cpu、內(nèi)存、線程等的使用情況。并且使用圖表的方式監(jiān)控java程序、還具有遠(yuǎn)程監(jiān)控能力。

前期準(zhǔn)備

1、上傳tomcat到虛擬機(jī),webapps下存在Prefteach包

2、監(jiān)控之前先對jvm加監(jiān)控參數(shù),在tomcat的bin目錄下,catalina.sh文件中,搜索JAVA_OPTS=,在if里面,添加:

-Dcom.sun.management.jmxremote.port=10086 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false -Djava.rmi.server.hostname=192.168.1.101

以上添加的內(nèi)容,需要修改兩處

1-改port

2-改hostname為本機(jī)ip

3、啟動tomcat并打開輸出日志:./startup.sh ../logs/catalina.out

jvisualvm使用

1、windows鍵+R鍵 輸入jvisualvm回車

2、右鍵遠(yuǎn)程添加遠(yuǎn)程主機(jī)

教你如何監(jiān)控 Java 線程池運(yùn)行狀態(tài)的操作(必看)

3、在 主機(jī)ip 上右鍵添加jmv連接

教你如何監(jiān)控 Java 線程池運(yùn)行狀態(tài)的操作(必看)

4、輸入遠(yuǎn)程連接的端口號點(diǎn)擊確定

教你如何監(jiān)控 Java 線程池運(yùn)行狀態(tài)的操作(必看)

5、雙擊192.168.1.101:10086,打開如下圖所示的界面

教你如何監(jiān)控 Java 線程池運(yùn)行狀態(tài)的操作(必看)

6、進(jìn)入jvisualvm時時查看程序運(yùn)行狀態(tài)

教你如何監(jiān)控 Java 線程池運(yùn)行狀態(tài)的操作(必看)

注釋:在測試環(huán)境中有可能沒有權(quán)限在服務(wù)器上添加需要遠(yuǎn)程連接的配置,這樣只能使用jstack

補(bǔ)充:java 如何獲得線程池中正在執(zhí)行的線程數(shù)

java中線程池的監(jiān)控可以檢測到正在執(zhí)行的線程數(shù)。

通過線程池提供的參數(shù)進(jìn)行監(jiān)控。線程池里有一些屬性在監(jiān)控線程池的時候可以使用

taskCount:線程池需要執(zhí)行的任務(wù)數(shù)量。

completedTaskCount:線程池在運(yùn)行過程中已完成的任務(wù)數(shù)量。小于或等于taskCount。

largestPoolSize:線程池曾經(jīng)創(chuàng)建過的最大線程數(shù)量。通過這個數(shù)據(jù)可以知道線程池是否滿過。如等于線程池的最大大小,則表示線程池曾經(jīng)滿了。

getPoolSize:線程池的線程數(shù)量。如果線程池不銷毀的話,池里的線程不會自動銷毀,所以這個大小只增不+ getActiveCount:獲取活動的線程數(shù)。

通過擴(kuò)展線程池進(jìn)行監(jiān)控。通過繼承線程池并重寫線程池的beforeExecute,afterExecute和terminated方法,我們可以在任務(wù)執(zhí)行前,執(zhí)行后和線程池關(guān)閉前干一些事情。

如監(jiān)控任務(wù)的平均執(zhí)行時間,最大執(zhí)行時間和最小執(zhí)行時間等。這幾個方法在線程池里是空方法。

如:

protected void beforeExecute(Thread t, Runnable r) { }

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持好吧啦網(wǎng)。如有錯誤或未考慮完全的地方,望不吝賜教。

標(biāo)簽: Java
相關(guān)文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
国产亚洲在线观看| 精品三级在线观看视频| 精品国产aⅴ| 色爱综合网欧美| 国产欧洲在线| 日韩视频不卡| 伊人久久亚洲| 国产欧美日韩免费观看| 精品美女视频 | 久久麻豆精品| 日韩av片子| 国产传媒在线观看| 国产二区精品| 欧美亚洲国产日韩| 日韩免费av| 久久国产精品毛片| 欧美激情精品| 99日韩精品| 国产精品一区二区免费福利视频| 欧美在线黄色| 国产精品一区三区在线观看| 国产成人久久精品麻豆二区 | 亚洲人成在线网站| 欧美成a人免费观看久久| 狠狠色狠狠色综合日日tαg| 国产毛片精品| 国产精品普通话对白| 精品入口麻豆88视频| 色综合视频一区二区三区日韩| 欧美sm一区| 日本不卡的三区四区五区| 国产99久久| 韩国久久久久久| 国产精品白丝一区二区三区| 蜜臀av一区二区在线免费观看| 精品国内亚洲2022精品成人| 午夜亚洲精品| 日韩精品麻豆| 国产日韩精品视频一区二区三区| 亚洲欧美日本日韩| 久久一区视频| 亚洲福利免费| 国产精品videossex久久发布 | 四虎精品一区二区免费| 精品日本视频| 人人精品久久| 中文一区在线| 久久国产亚洲| 麻豆国产精品| 91精品国产自产精品男人的天堂| 欧美成人综合| 日本色综合中文字幕| 亚洲国产一区二区在线观看| 国产黄大片在线观看| 国产精品地址| 国产欧美另类| 日本久久二区| 日韩激情啪啪| 日本成人在线视频网站| 日韩中出av| 日韩精品高清不卡| 亚洲精品国模| 日韩三级视频| 国产欧美日韩| 美女视频黄久久| 精品72久久久久中文字幕| 日韩精品第二页| 国产精品久久久网站| 国产亚洲字幕| 欧美a一区二区| 97国产精品| 亚洲一本视频| 日韩在线一区二区| 欧美一区激情| 美女视频黄免费的久久| 91欧美在线| 欧美日韩国产免费观看视频| 亚洲一区二区三区四区电影| 日韩高清欧美激情| 欧美激情在线精品一区二区三区| av中文资源在线资源免费观看| 国产欧美日韩一区二区三区在线| 欧美韩一区二区| 天堂√中文最新版在线| 日韩亚洲国产欧美| 国产情侣一区| 婷婷综合六月| 日本vs亚洲vs韩国一区三区二区| 久久精品国产精品亚洲毛片| 国产精品久久久久久久久久久久久久久| 精品一区二区三区四区五区| 日韩深夜视频| 亚洲综合色婷婷在线观看| 久久精品国产网站| 久久成人国产| 捆绑调教美女网站视频一区| 乱一区二区av| 亚洲精品免费观看| 精品视频网站| 亚洲欧美网站| 日本欧美国产| 欧美一级二级视频| 在线日韩欧美| 久久精品日韩欧美| 婷婷综合电影| 99热国内精品| 免费在线亚洲欧美| 蜜臀av亚洲一区中文字幕| 欧美sm一区| 精品美女视频| 国产精品对白| 亚洲在线电影| 久久久久蜜桃| 日韩欧美精品| 国产va免费精品观看精品视频| 国产精品中文| 日韩高清国产一区在线| 亚洲欧美网站| 99精品99| 99视频在线精品国自产拍免费观看| 色婷婷色综合| 欧美伊人影院| 91麻豆精品激情在线观看最新 | 色吊丝一区二区| 国产精品二区影院| 久久久国产精品入口麻豆| 欧美久久亚洲| 国产精品免费精品自在线观看| 欧美日韩中出| 青草综合视频| 精品免费视频| 欧美成人精品三级网站| 99久久99久久精品国产片果冰 | 国产日韩免费| 国产精品一区二区精品视频观看| 国产亚洲人成a在线v网站| 日韩精品a在线观看91| 欧美一区影院| 精品美女视频| 久久精品国产大片免费观看| 亚洲婷婷免费| 日本亚洲欧美天堂免费| 国产精品一卡| 岛国av免费在线观看| 合欧美一区二区三区| 午夜亚洲福利| 国产精品欧美一区二区三区不卡| 成人一二三区| 日韩在线第七页| 午夜精品网站| 国产精品嫩模av在线| 国内精品麻豆美女在线播放视频| 1024精品一区二区三区| 亚洲在线电影| 久久精品资源| 伊人久久大香线蕉av不卡| 99在线|亚洲一区二区| 久久国产精品美女| 精品欧美激情在线观看| 欧美日韩伊人| 欧美国产91| 国产精品**亚洲精品| 国产二区精品| 麻豆国产一区| 今天的高清视频免费播放成人| 国产精品久久久久久久久久白浆 | 精品欧美久久| 日韩毛片网站| 久久中文字幕av一区二区不卡| 综合一区av| 日韩1区2区| 日本欧美在线看| 国产拍在线视频| 国产麻豆一区二区三区精品视频| 噜噜噜躁狠狠躁狠狠精品视频| 国产一区国产二区国产三区| 日韩视频一区| 国产精品99精品一区二区三区∴ | 激情综合网五月| 捆绑调教美女网站视频一区| 日韩精品乱码av一区二区| 欧美日韩第一| 色综合www| 麻豆国产在线| 久久精品国产99国产| 日本视频在线一区| 亚洲精品美女| 欧美日韩国产高清| 福利精品在线| 国产成人77亚洲精品www| 你懂的国产精品| 久久精品国产99国产精品| 国产精品jk白丝蜜臀av小说| 欧美久久久网站| 国产丝袜一区| 国产精品一区二区精品| 国产精品激情| 国产va在线视频| 久久国产小视频| 夜夜精品视频|