Day23-JDK可视化监控工具:jconsole(三)

前言

这篇还是要继续来介绍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. 检查线程是否有死锁

<<:  Day-27 图论(Graph)基本概念

>>:  DAY26-在firebase上架你的react网站吧

Day 26 一直线的前进_____ 不能断啊!

我们不能总在弹性限度里活动,要爆发,要超越,才会有质的提高。 《iT邦帮忙铁人赛的观点》(以下简称铁...

第15章:管理与设定网路介绍(三)

前言 在这一章节中,主要展示如何使用网路管理之指令介面来设定网路介面,即nmcli指令来设定网路介面...

DAY29-VSCODE安装

直接在官网上下载即可。 这边选择自己的系统 这里将这两个打勾就能直接用右键开启 ...

Day26 指派角色给使用者

昨天角色的 CRUD 功能都完成了,接着就是要把角色指派给使用者了,先建立一个 ViewModel ...

[Day13] TS:什麽!这个 typeof 和我想的不一样?

这是我们今天要聊的内容(不是业配),老样的,如果你已经可以轻松看懂,欢迎直接左转去看我同事 Ken...