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

您的位置:首頁技術文章
文章詳情頁

教你如何監控 Java 線程池運行狀態的操作(必看)

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

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

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

如果你想監控某一個線程池的執行狀態,線程池執行類 ThreadPoolExecutor 也給出了相關的 API, 能實時獲取線程池的當前活動線程數、正在排隊中的線程數、已經執行完成的線程數、總線程數等。

總線程數 = 排隊線程數 + 活動線程數 + 執行完成的線程數

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

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('當前排隊線程數:' + queueSize); int activeCount = tpe.getActiveCount(); System.out.println('當前活動線程數:' + activeCount); long completedTaskCount = tpe.getCompletedTaskCount(); System.out.println('執行完成線程數:' + completedTaskCount); long taskCount = tpe.getTaskCount(); System.out.println('總線程數:' + taskCount); Thread.sleep(3000); }}

線程池提交了 100000 個任務,但同時只有 50 個線程在執行工作,我們每陋 3 秒來獲取當前線程池的運行狀態。

第一次程序輸出:

當前排隊線程數:99950

當前活動線程數:50

執行完成線程數:0

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

第二次程序輸出:

當前排隊線程數:99800

當前活動線程數:50

執行完成線程數:150

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

活動線程數和總線程數是不變的,排隊中的線程數和執行完成的線程數不斷在變化,

直到所有任務執行完畢,最后輸出:

當前排隊線程數:0

當前活動線程數:0

執行完成線程數:100000

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

這樣,你了解了這些 API 的使用方法,你想監控線程池的狀態就非常方便了。

補充:Java線程及Jvm監控工具

Java線程狀態線程的五種狀態

* 新建:new(時間很短)

* 運行:runnable

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

* 阻塞:blocked

* 結束:terminated(時間很短)

教你如何監控 Java 線程池運行狀態的操作(必看)

Jvm監控工具一、jstack

介紹:

jstack用于打印出給定的java進程ID或core file或遠程調試服務的Java堆棧信息。

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

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

另外,jstack工具還可以附屬到正在運行的java程序中,看到當時運行的java程序的java stack和native stack的信息, 如果現在運行的java程序呈現hung的狀態,jstack是非常有用的。

使用:

1、查看運行程序的進程號

教你如何監控 Java 線程池運行狀態的操作(必看)

2、jstack dump當前線程狀態

教你如何監控 Java 線程池運行狀態的操作(必看)

3、根據當前抓取到的信息進行進一步的分析

二、jvisualvm

jdk自帶有個jvisualvm工具、該工具是用來監控java運行程序的cpu、內存、線程等的使用情況。并且使用圖表的方式監控java程序、還具有遠程監控能力。

前期準備

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

2、監控之前先對jvm加監控參數,在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

以上添加的內容,需要修改兩處

1-改port

2-改hostname為本機ip

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

jvisualvm使用

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

2、右鍵遠程添加遠程主機

教你如何監控 Java 線程池運行狀態的操作(必看)

3、在 主機ip 上右鍵添加jmv連接

教你如何監控 Java 線程池運行狀態的操作(必看)

4、輸入遠程連接的端口號點擊確定

教你如何監控 Java 線程池運行狀態的操作(必看)

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

教你如何監控 Java 線程池運行狀態的操作(必看)

6、進入jvisualvm時時查看程序運行狀態

教你如何監控 Java 線程池運行狀態的操作(必看)

注釋:在測試環境中有可能沒有權限在服務器上添加需要遠程連接的配置,這樣只能使用jstack

補充:java 如何獲得線程池中正在執行的線程數

java中線程池的監控可以檢測到正在執行的線程數。

通過線程池提供的參數進行監控。線程池里有一些屬性在監控線程池的時候可以使用

taskCount:線程池需要執行的任務數量。

completedTaskCount:線程池在運行過程中已完成的任務數量。小于或等于taskCount。

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

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

通過擴展線程池進行監控。通過繼承線程池并重寫線程池的beforeExecute,afterExecute和terminated方法,我們可以在任務執行前,執行后和線程池關閉前干一些事情。

如監控任務的平均執行時間,最大執行時間和最小執行時間等。這幾個方法在線程池里是空方法。

如:

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

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

標簽: Java
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
亚洲精品美女| 中文字幕视频精品一区二区三区| 狠狠色综合网| 国内自拍视频一区二区三区| 日韩精品三级| 在线日韩一区| 神马日本精品| 欧美三级网址| 久久99偷拍| 国产欧美高清| 日韩超碰人人爽人人做人人添| 日韩久久精品网| 精品日韩视频| 久久精品1区| 久久国产中文字幕| 日韩毛片视频| 欧美福利在线| 蜜桃一区二区三区| 高清在线一区| 欧美精品91| 国产精品久久久久9999高清| 国产日韩亚洲欧美精品| 欧美激情网址| 播放一区二区| 日韩美女国产精品| 日韩高清欧美激情| 亚洲一二av| 亚洲开心激情| 日韩欧美精品一区二区综合视频| 亚洲综合不卡| 在线成人动漫av| 蜜桃视频第一区免费观看| 日韩专区欧美专区| 亚洲精品无播放器在线播放| 美女精品在线观看| 日韩高清不卡在线| 国产精品任我爽爆在线播放 | 97人人精品| 日韩成人精品一区二区| 国产传媒在线观看| 亚洲福利免费| 免费观看日韩电影| 日韩高清国产一区在线| av高清不卡| 伊人久久婷婷| 婷婷综合成人| 夜鲁夜鲁夜鲁视频在线播放| 亚洲大全视频| 亚洲视频二区| 国产中文在线播放| 亚洲精品午夜av福利久久蜜桃| 蜜桃av一区二区三区电影| 麻豆91精品91久久久的内涵| 日本国产精品| 麻豆mv在线观看| 国产精品欧美一区二区三区不卡| yellow在线观看网址| 欧美中文字幕一区二区| 国产精品欧美在线观看| 亚洲一区二区av| 亚洲激情五月| 欧美日韩视频| 亚洲精品福利| 99久久亚洲精品蜜臀| 亚洲综合专区| 欧美aⅴ一区二区三区视频| 樱桃视频成人在线观看| 亚洲乱码视频| 国产一区精品福利| 91成人精品视频| 18国产精品| 欧美日韩视频网站| 在线免费观看亚洲| 日韩精品一区二区三区免费观看| 在线精品一区| 麻豆mv在线观看| 久久国产福利| 成人台湾亚洲精品一区二区 | 午夜国产一区二区| 久久亚洲道色| 噜噜噜躁狠狠躁狠狠精品视频 | 亚洲一区二区三区四区电影| аⅴ资源天堂资源库在线| 性欧美长视频| 欧美国产美女| 老司机免费视频一区二区三区| 性欧美xxxx免费岛国不卡电影| 日韩美女精品| 久热精品在线| 日韩成人亚洲| 国产精品久久| 久久国产麻豆精品| 国产模特精品视频久久久久| 日韩欧美高清一区二区三区| 亚洲韩日在线| 国产精品大片免费观看| 免费在线成人网| 久久国产尿小便嘘嘘| 在线亚洲激情| 国产亚洲一区在线| 精品久久久亚洲| 亚洲视频二区| 久久天堂成人| 日韩精品免费视频人成 | 丝袜脚交一区二区| 精品视频久久| 国产亚洲一卡2卡3卡4卡新区| 久久精品官网| 久久这里只有精品一区二区| 丝瓜av网站精品一区二区| 日本久久综合| 国产欧美69| 久久国产精品久久久久久电车 | 欧美国产91| 国产白浆在线免费观看| 日本欧美久久久久免费播放网| 亚洲精品网址| 精品精品久久| 樱桃视频成人在线观看| 国产精品久久久网站| 亚洲综合中文| 女同性一区二区三区人了人一 | 一级欧洲+日本+国产| 成人污污视频| 国产精品jk白丝蜜臀av小说| 日韩在线麻豆| 日韩激情精品| 日韩欧美在线精品| 亚洲一二三区视频| 日韩精品亚洲aⅴ在线影院| 久久国产精品亚洲77777| 国产99精品| 精品91久久久久| 97精品中文字幕| 老司机精品视频网| 国产精品成人a在线观看| 久久久久伊人| 久久99国产精品视频| 国产一区二区三区四区| 久久亚洲国产精品尤物| 国产乱码精品一区二区亚洲| 国产综合精品| 亚洲一区免费| 久久亚洲欧美| 首页欧美精品中文字幕| 好吊日精品视频| 狠狠色狠狠色综合日日tαg| 国产综合精品| 国产精品久久久久久久免费观看| 国产精品3区| 国产资源在线观看入口av| 福利片在线一区二区| 成午夜精品一区二区三区软件| 成人精品中文字幕| 亚洲欧美综合| 婷婷综合六月| 99香蕉国产精品偷在线观看 | 久久国产三级| 国产精品极品国产中出| av资源中文在线天堂| 极品日韩av| 日本不卡视频在线| 国模大尺度视频一区二区| 欧美影院三区| 日本vs亚洲vs韩国一区三区二区| 久久午夜影院| 亚洲一级高清| 亚洲三级网址| 日本久久黄色| 一区二区三区午夜视频| 久久亚州av| 亚洲欧洲一区| 国产福利一区二区三区在线播放| 午夜影院一区| 综合一区二区三区| 高清日韩欧美| 综合激情在线| 欧洲精品一区二区三区| 亚洲精品精选| 性感美女一区二区在线观看| 免费久久精品视频| 国产 日韩 欧美 综合 一区| 亚洲欧美日韩一区在线观看| 精品一区不卡| 视频一区二区三区在线| 给我免费播放日韩视频| 午夜在线视频一区二区区别| 日韩av中文字幕一区二区| 久久电影tv| 国产精品欧美在线观看| 亚洲一区二区成人| 麻豆国产在线| 一区二区三区四区精品视频| 国产精品毛片久久| 日韩和欧美的一区| 日韩欧美少妇| 韩日一区二区三区| 国产福利片在线观看| 欧美激情国产在线| 久久激情五月婷婷|