java并发编程笔记5----使用IDEA的Terminal工具排查死锁

这是我学习java并发编程做的笔记,附上原课程B站地址:全面深入学习java并发编程,中级程序员进阶必会

1.简单的死锁程序

以下代码会导致一个死锁: t1线程锁住A对象后申请B对象的锁,t2线程锁住B对象后申请A对象锁,产生矛盾,导致死锁。
将此代码运行,然后下一步

/**
 *死锁的演示与排查
 *
 * */
@Slf4j(topic = "c.Test2")
public class Test2 {

    private static final Object A = new Object();
    private static final Object B = new Object();

    public static void main(String[] args) {

        new Thread(()->{
            synchronized (A){
                log.debug("锁住A...");
                try {
                    Thread.sleep(1000);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }

                synchronized (B){
                    log.debug("锁住B...");
                    try {
                        Thread.sleep(1000);
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                }
            }
        },"t1").start();

        new Thread(()->{
            synchronized (B){
                log.debug("锁住B...");
                try {
                    Thread.sleep(1000);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }

                synchronized (A){
                    log.debug("锁住A...");
                    try {
                        Thread.sleep(1000);
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                }
            }
        },"t2").start();


    }
}
2.打开Terminal,输入jps

点击打开terminal工具,输入jps,查看进程id
在这里插入图片描述

3.找到对应线程,输入jstack 对应id

如下:
在这里插入图片描述

4.查看打印的信息

下图的意思就是,t2锁住了f98的一个对象,需要一个f88的
在这里插入图片描述
下图的意思就是,t1锁住了f88的一个对象,需要一个f98的,综合上面的图,就知道俩兄弟意见不合,各要对方的资源,然后就尬住了,即死锁。
在这里插入图片描述

当然,懒得分析上面独立的信息也可以往下滑

底下直接就帮你分析好了
在这里插入图片描述
以上就是所有啦,告辞我继续滚去学习了。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大青儿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值