概述
一个简单的死锁图解:
代码实现
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
然后
同样也能看到死锁情况。
最后
以上就是温婉龙猫为你收集整理的检测死锁的两种办法的全部内容,希望文章能够帮你解决检测死锁的两种办法所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复