使用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 都是阻塞状态,
并且会提示你 哪里发生了死锁