zoukankan      html  css  js  c++  java
  • 如何查看Java进程发生了死锁?

    运行一个Java程序, 发生了死锁, 如何查看?

    运行以下程序发生死锁

    public class DeadLockTest {
     
    	public static void main(String[] args) {
    		new Thread(new Runnable() {
    			
    			@Override
    			public void run() {
    				synchronized (B.class) {
    					try {
    						Thread.sleep(1000);
    					} catch (InterruptedException e) {
    						e.printStackTrace();
    					}
    					synchronized (A.class) {
    						
    					}
    				}
    			}
    		}).start();
    		new Thread(new Runnable() {
    			
    			@Override
    			public void run() {
    				synchronized (A.class) {
    					try {
    						Thread.sleep(1000);
    					} catch (InterruptedException e) {
    						// TODO Auto-generated catch block
    						e.printStackTrace();
    					}
    					synchronized (B.class) {
    						
    					}
    				}
    				
    			}
    		}).start();
    	}
    	
    }
    class A {
    	
    }
     
    class B {
    	
    }
    

    查看死锁方法一:

    打开%JAVA_HOME%/bin/jconsole.exe,

    image-20210409122232936 image-20210409122313725

    看这两个线程互相锁住的和阻塞的资源, 就能判断发生了死锁。

    查看死锁方法二:

    使用jps命令先查看进程号

    image-20210409122457224

    然后运行jstack -l 2340

    image-20210409122623738

    如图, 发生了死锁。

  • 相关阅读:
    Dom对象,控制html元素
    运算符总结
    数组
    变量命名规则
    css实现气泡说明框
    深入理解CSS中的层叠上下文和层叠顺序
    jquery书写
    二级导航
    iis配置
    Android ListView无法触发ItemClick事件
  • 原文地址:https://www.cnblogs.com/chenrj97/p/14636619.html
Copyright © 2011-2022 走看看