运行一个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,

如何查看Java进程发生了死锁?如何查看Java进程发生了死锁?

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

查看死锁方法二:

使用jps命令先查看进程号

如何查看Java进程发生了死锁?

然后运行jstack -l 2340

如何查看Java进程发生了死锁?

如图, 发生了死锁。

相关文章:

  • 2021-11-20
  • 2021-12-27
  • 2021-12-07
  • 2022-12-23
  • 2021-08-03
  • 2021-11-13
  • 2021-09-12
猜你喜欢
  • 2022-01-21
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-04-22
  • 2022-12-23
  • 2022-12-23
相关资源
相似解决方案