我是靠谱客的博主 温婉龙猫,最近开发中收集的这篇文章主要介绍检测死锁的两种办法,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

一个简单的死锁图解:

在这里插入图片描述

代码实现

public class DeadLockDemo {

    public static void main(String[] args) {
        Object object1 = new Object();
        Object object2 = new Object();

        new Thread(() -> {
            synchronized (object1) {
                System.out.println(Thread.currentThread().getName() + " 锁住了 object1, 想再锁住 object2");
                try { TimeUnit.SECONDS.sleep(2); } catch (InterruptedException e) { e.printStackTrace(); }
                synchronized (object2) {
                    System.out.println(Thread.currentThread().getName() + " 锁住了 object2");
                }
            }
        }, "t1").start();

        new Thread(() -> {
            synchronized (object2) {
                System.out.println(Thread.currentThread().getName() + " 锁住了 object2, 想再锁住 object1");
                try { TimeUnit.SECONDS.sleep(2); } catch (InterruptedException e) { e.printStackTrace(); }
                synchronized (object1) {
                    System.out.println(Thread.currentThread().getName() + " 锁住了 object1");
                }
            }
        }, "t2").start();
    }
}

在这里插入图片描述

检测死锁的方式:

方式一:
IDEA的控制台输入jps -l (这个相当于Linux的ps -ef),得到如下结果:
在这里插入图片描述
然后输入jstack 进程号,来查看死锁情况,这里的话是jstack 56492
在这里插入图片描述
方式二:
win+R运行命令 jconsole
在这里插入图片描述
然后
在这里插入图片描述
同样也能看到死锁情况。

最后

以上就是温婉龙猫为你收集整理的检测死锁的两种办法的全部内容,希望文章能够帮你解决检测死锁的两种办法所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(44)

评论列表共有 0 条评论

立即
投稿
返回
顶部