深入理解Java虚拟机——可视化监控工具(Jconsole)线程死锁监控示例

Posted 小志的博客

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了深入理解Java虚拟机——可视化监控工具(Jconsole)线程死锁监控示例相关的知识,希望对你有一定的参考价值。

目录

一、可视化监控工具(Jconsole)的使用

二、可视化监控工具(Jconsole)线程死锁监控示例

2.1、编写死锁代码示例并运行

  • 模拟死锁代码

    /**
     * @description:
     * @author: xz
     */
    public class DeadLock implements Runnable
        private Object object1;
        private Object object2;
    
        public DeadLock(Object object1,Object object2)
            this.object1 =object1;
            this.object2 =object2;
        
    
        @Override
        public void run() 
            synchronized (object1)
                try 
                    Thread.sleep(100);
                 catch (InterruptedException e) 
                    e.printStackTrace();
                
                synchronized (object2)
                    System.out.println("hello world");
                
            
        
    
    
  • 运行死锁代码的测试类

    public class DeadLockTest 
        public static void main(String[] args) 
            Object obj1 = new Object();
            Object obj2 = new Object();
    
            new Thread(new DeadLock(obj1,obj2)).start();
    
            new Thread(new DeadLock(obj2,obj1)).start();
        
    
    
  • 启动测试类,因为死锁没有输出“hello world”,如下图:

2.2、启动可视化监控工具(Jconsole),查看线程情况

  • dos命令行窗口输入jconsole命令,弹出【Java监控和管理控制台】,如下图:

  • 查看Thread-0和Thread-1 线程情况,如下图:

  • 由上图可知:Thread-0线程等待,等待数量为1,拥有者为Thread-1;Thread-1线程等待,等待数量为1,拥有者为Thread-0;因此Thread-0和Thread-1造成死锁。

以上是关于深入理解Java虚拟机——可视化监控工具(Jconsole)线程死锁监控示例的主要内容,如果未能解决你的问题,请参考以下文章

深入理解java虚拟机第二版虚拟机性能监控与故障处理工具

jvm,深入理解java虚拟机,虚拟机性能监控与故障处理工具(JDK的命令行工具和 JDK的可视化工具)

jvm,深入理解java虚拟机,虚拟机性能监控与故障处理工具(JDK的命令行工具和 JDK的可视化工具)

jvm,深入理解java虚拟机,虚拟机性能监控与故障处理工具(JDK的命令行工具和 JDK的可视化工具)

深入理解java虚拟机---虚拟机工具VisualVM(十九)

深入理解java虚拟机JConsole:Java监视与管理控制台