java程序死锁,3种方式快速找到死锁代码

程序中:thread1持有u1的锁,thread2持有u2的锁,thread1等待获取u2的锁,thread2等待获取u1的锁,相互需要获取的锁都被对方持有者,造成了死锁。程序运行中一直无法结束。

通过jdk工具jps、jstack排查死锁问题


jps、jstack都是jdk提供的命令工具,方便用户排查程序的一些问题。更详细的用法见文档最后。

步骤一:使用jsp查找程序进行

jps:jdk提供的一个工具,可以查看到正在运行的java进程

C:\Users\Think>jps -l

5824 com.jvm.visualvm.Demo4

步骤二:使用jstack查看线程堆栈信息

jstack:jdk提供的一个工具,可以查看java进程中线程堆栈信息。更详细的用法见文档最后。

C:\Users\Think>jstack 5824

2019-06-04 15:34:37

Full thread dump Java HotSpot™ 64-Bit Server VM (25.121-b13 mixed mode):

“DestroyJavaVM” #14 prio=5 os_prio=0 tid=0x0000000002cf4000 nid=0x9fd8 waiting on condition [0x0000000000000000]

java.lang.Thread.State: RUNNABLE

“thread2” #13 prio=5 os_prio=0 tid=0x000000002884d800 nid=0x40c4 waiting for monitor entry [0x00000000292ce000]

java.lang.Thread.State: BLOCKED (on object monitor)

at com.jvm.visualvm.Demo4$SynAddRunalbe.run(Demo4.java:49)

  • waiting to lock <0x00000007173d4178> (a com.jvm.visualvm.Demo4$User)

  • locked <0x00000007173d41b8> (a com.jvm.visualvm.Demo4$User)

at java.lang.Thread.run(Thread.java:745)

“thread1” #12 prio=5 os_prio=0 tid=0x000000002885b800 nid=0x99c0 waiting for monitor entry [0x00000000291cf000]

java.lang.Thread.State: BLOCKED (on object monitor)

at com.jvm.visualvm.Demo4$SynAddRunalbe.run(Demo4.java:42)

  • waiting to lock <0x00000007173d41b8> (a com.jvm.visualvm.Demo4$User)

  • locked <0x00000007173d4178> (a com.jvm.visualvm.Demo4$User)

at java.lang.Thread.run(Thread.java:745)

“Service Thread” #11 daemon prio=9 os_prio=0 tid=0x0000000027dd9000 nid=0x7f80 runnable [0x0000000000000000]

java.lang.Thread.State: RUNNABLE

“C1 CompilerThread3” #10 daemon prio=9 os_prio=2 tid=0x0000000027d80800 nid=0x3b94 waiting on condition [0x0000000000000000]

java.lang.Thread.State: RUNNABLE

“C2 CompilerThread2” #9 daemon prio=9 os_prio=2 tid=0x0000000027d7c000 nid=0x4c7c waiting on condition [0x0000000000000000]

java.lang.Thread.State: RUNNABLE

“C2 CompilerThread1” #8 daemon prio=9 os_prio=2 tid=0x0000000027d7b000 nid=0x8f4c waiting on condition [0x0000000000000000]

java.lang.Thread.State: RUNNABLE

“C2 CompilerThread0” #7 daemon prio=9 os_prio=2 tid=0x0000000027d73000 nid=0x9094 waiting on

  • 9
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值