深入理解Java虚拟机——可视化监控工具(Jconsole)线程死锁监控示例
Posted 小志的博客
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了深入理解Java虚拟机——可视化监控工具(Jconsole)线程死锁监控示例相关的知识,希望对你有一定的参考价值。
目录
一、可视化监控工具(Jconsole)的使用
- 参考lz此博文链接:可视化监控工具(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)线程死锁监控示例的主要内容,如果未能解决你的问题,请参考以下文章
jvm,深入理解java虚拟机,虚拟机性能监控与故障处理工具(JDK的命令行工具和 JDK的可视化工具)
jvm,深入理解java虚拟机,虚拟机性能监控与故障处理工具(JDK的命令行工具和 JDK的可视化工具)
jvm,深入理解java虚拟机,虚拟机性能监控与故障处理工具(JDK的命令行工具和 JDK的可视化工具)