首页 > 编程语言 > 详细

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

时间:2021-04-09 16:32:23      阅读:35      评论:0      收藏:0      [点我收藏+]

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

技术分享图片 技术分享图片

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

查看死锁方法二:

使用jps命令先查看进程号

技术分享图片

然后运行jstack -l 2340

技术分享图片

如图, 发生了死锁。

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

原文:https://www.cnblogs.com/chenrj97/p/14636619.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!