zoukankan      html  css  js  c++  java
  • (十一)使用Jconsole监控线程

    一、案例

    • 监控线程情况,包括阻塞、死循环等

      1.1  代码如下,下述代码共有三个线程,Main、mythread01、mythread02线程,其中mythread01线程为死循环、mythread02为阻塞线程

    package jvm;
    
    import java.util.Scanner;
    import java.util.concurrent.ExecutorService;
    import java.util.concurrent.Executors;
    
    public class JStackTest {
        public static void main(String[] args) {
    
            Scanner sc = new Scanner(System.in);
            sc.next();
    
            /**
             * 该线程死循环
             */
            new Thread(new Runnable() {
    
                @Override
                public void run() {
                    while (true) {
    
                    }
    
                }
            }, "mythread01").start();
    
            sc.next();
    
            /**
             * 该线程阻塞
             */
            testWait(new Object());
    
        }
    
        private static void testWait(Object obj) {
            new Thread(new Runnable() {
    
                @Override
                public void run() {
    
                    synchronized (obj) {
                        try {
                            obj.wait();
                        } catch (InterruptedException e) {
                            e.printStackTrace();
                        }
                    }
    
                }
            }, "mythread02").start();
    
        }
    }
    • 运行程序,打开jconsole,结果如下图,此时只有main线程,且该线程状态为Runable,main线程阻塞因为正在等待用户输入(sc.next();)。

    • 在console输入一次之后,如下图

    • 再查看jconsole,结果如下,发现多了一个mythread01线程,且该线程也为Runable状态,查看代码发现该线程是死循环所以阻塞。

     

    •  再在console输入一次,如下图

     

    • 再查看jconsole,结果如下,main线程已经执行完毕了,所以消失了。mythread01线程还在执行(死循环),多了mythread02线程,该线程为WATING状态

     

  • 相关阅读:
    C语言学习_C如何在一个文件里调用另一个源文件中的函数
    C语言学习_include<>与include""的区别
    C语言学习_一个简单程序的解释与C学习方法概括
    python_list和tuple互转
    C语言学习_恶搞小程序
    Linux命令(基础1)
    Linux基础配置
    面向对象知识补充1
    linux系统centOS在虚拟机下的自定义安装
    sql注入
  • 原文地址:https://www.cnblogs.com/shyroke/p/8305731.html
Copyright © 2011-2022 走看看