使用IDEA自带的控制台查看死锁
1. 运行你的程序
代码示例:
public class DeadLockTest {
static final Object A = new Object();
static final Object B = new Object();
public static void main(String[] args) {
new Thread(() -> {
synchronized (A) {
log.debug("t1 lock A");
try {
sleep(1000);
synchronized (B) {
log.debug("wait get lock B");
}
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
}
}, "t1").start();
new Thread(() -> {
synchronized (B) {
log.debug("t2 lock B");
try {
sleep(1000);
synchronized (A) {
log.debug("wait get lock B");
}
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
}
}, "t2").start();
}
}
2. 输入 jps

找到线程信息
3. 输入 jstack [进程号]

4. 查看输出的信息,发现两个线程t1 t2 都是阻塞状态,

并且会提示你 哪里发生了死锁

本文来自博客园,作者:xiaolifc,转载请注明原文链接:https://www.cnblogs.com/xiaolibiji/p/17664210.html
浙公网安备 33010602011771号