使用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
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~