使用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 都是阻塞状态,

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

posted @   xiaolifc  阅读(527)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~
点击右上角即可分享
微信分享提示