15.线程诊断_迟迟得不到结果(jstack排查死锁问题)

 

 

本来,运行这段程序,想输出一个结果,但是一直不输出结果,等不及了想看看情况,怎么办呢?

(会不会发生死锁了呀,怎么办呢???急呀...)

我们还是用jstack 进程号,来执行一把,上图nohup启动了java进程,得到了进程号32752

我们使用jstack32752试试看。

 

我们可以在jstack最后一段输出中,发现Found one Java-Level deadlock

jstack在进程中,找到了一个死锁。

我们再看上图,

thead-1的29行和thread-0的21行发生了死锁。

我们来看看代码。 

分析下这段代码,线程0最开始拿到了对象a,等了2s,线程1等了1s拿到了对象b,但马上想去拿对象a,但对象a被线程0拿着的,线程1只有等着。但2s后线程0醒了,它想要去拿对象b,但对象b又被线程1拿着的,于是乎线程0等线程1释放锁资源,线程1也等线程0释放锁资源,于是就锁起来,发生了死锁问题。

上一篇:14.线程诊断_cpu占用高(top、ps H -eo pid,tid,%CPU | grep tid、clear、jstack pid)-------注意jstack输出的线程信息是16进制的_tgbyhn31的博客-CSDN博客

下一篇:​​​​​​​16.jvm内存结构部分——本地方法栈_tgbyhn31的博客-CSDN博客

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值