目录
一、可视化监控工具(Jconsole)的使用
- 一、可视化监控工具(Jconsole)的使用
- 二、可视化监控工具(Jconsole)线程死锁监控示例
- 2.1、编写死锁代码示例并运行
- 2.2、启动可视化监控工具(Jconsole),查看线程情况
- 参考lz此博文链接:可视化监控工具(Jconsole)的使用。
-
模拟死锁代码
/** * @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”,如下图:
-
dos命令行窗口输入jconsole命令,弹出【Java监控和管理控制台】,如下图:
-
查看Thread-0和Thread-1 线程情况,如下图:
-
由上图可知:Thread-0线程等待,等待数量为1,拥有者为Thread-1;Thread-1线程等待,等待数量为1,拥有者为Thread-0;因此Thread-0和Thread-1造成死锁。