iT邦幫忙

2021 iThome 鐵人賽

DAY 23
0
自我挑戰組

展開JDK工具的30天應用之旅系列 第 23

Day23-JDK可視化監控工具:jconsole(三)

  • 分享至 

  • xImage
  •  

前言

這篇還是要繼續來介紹jconsole,Thread的頁籤介紹


Step.1 首先準備一個JconsoleTest.java檔案,程式碼如下

package Controller;

import java.util.Scanner;

public class JconsoleTest implements Runnable{
    private String message;
    public JconsoleTest(String message) {
      this.message = message;
    }
    public static void main(String[] args) throws InterruptedException{
      Thread.sleep(15000);
      JconsoleTest thread2 = new JconsoleTest("thread2");
      JconsoleTest thread3 = new JconsoleTest("thread3");
      Thread th3 = new Thread(thread2);
      Thread thr = new Thread(thread3);
      thr.setName("Thread2(線程2)");
      thr.start();
      th3.setName("Thread3(線程3)");
      th3.start();
      Thread.sleep(5000);
      thr.interrupt();
      for(int x=0;x<1000;x++){
        System.out.println("Thread1:"+x);
        Thread.sleep(100);
      }
      Scanner scannerTest = new Scanner(System.in);
      scannerTest.next();
    }
    public void run(){
      try{
          for(int x=0;x<1000;x++){
            System.out.println(this.message+":"+x);
            Thread.sleep(100);
          }
      }catch(InterruptedException e){
      }
    }
}

以上程式碼,我另外開了兩個線程,分別指定線程名稱為:Thread2(線程2)Thread3(線程3),在啟動了兩個線程後,我讓執行緒暫停5秒(Thread.sleep(5000);),接著手動將Thread3(線程3)中斷(interrupt),主線程Thread2(線程2)都分別跑了1000次,最後放個Scanner,讓程序等待輸入(為了看Thread得資訊)

Step.2 將程式碼進行編譯並且執行

編譯與執行的指令說明,請參考Day4-java語言編譯器:javac & 運行工具:java (上)

Step.3 打開jconsole工具進行連線

如何操作,請參考Day21-JDK可視化監控工具:jconsole(一)

Step.4 點擊Threads頁籤查看

https://ithelp.ithome.com.tw/upload/images/20211008/20140481Rg9RFvCAuG.png

  1. Time Range:選擇時間範圍
  2. 統計圖表
    • Peak:紅色的線表示最高峰的線程數量
    • Live threads:藍色線表示還存活著的線程數量
      https://ithelp.ithome.com.tw/upload/images/20211008/20140481n9uspsjt1O.png
      這邊我在截了一張圖,是在程序跑到最後的時候,Thread2(線程2)我手動結束掉(interrupt),Thread3(線程3)跑完結束,所以可以看到藍色的線降低了兩次
  3. 線程名稱:可透過此區塊看到目前還存活著的線程名稱,點擊後右邊會顯示詳細資訊
    可以與第4點圖一起看
  4. 指定線程詳細資訊
    https://ithelp.ithome.com.tw/upload/images/20211008/201404810c5cTFN7Fa.png
  5. 搜尋:若線程數量太多,一時之間不容易找,可透過搜尋的方式查找
    https://ithelp.ithome.com.tw/upload/images/20211008/20140481HPBerAR9VW.png
  6. 檢查線程是否有死鎖

上一篇
Day22-JDK可視化監控工具:jconsole(二)
下一篇
Day24-JDK可視化監控工具:jconsole(四)
系列文
展開JDK工具的30天應用之旅30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言