线程转储包含“null”拥有的对象的java死锁情况

jchrr9hc  于 2021-06-29  发布在  Java
关注(0)|答案(0)|浏览(228)

我访问了一个临时web服务器的线程转储,该服务器有多个线程在不同的对象上等待。一个计时器线程可以访问0x13e30613对象并等待0x2fa1056c。

"Timer-17637" prio=5 tid=0x75e4 nid=0xffffffff in Object.wait()
   java.lang.Thread.State: WAITING (on object monitor)
    at java.base@11.0.8/jdk.internal.misc.Unsafe.park(Native Method)
    - waiting to lock <0x2fa1056c> (a java.util.concurrent.CountDownLatch$Sync) owned by "null" tid=0x-1
    at java.base@11.0.8/java.util.concurrent.locks.LockSupport.park(LockSupport.java:194)
    ..... 
    .....
    - locked <0x13e30613> (a java.lang.Object)
    at java.base@11.0.8/java.util.TimerThread.mainLoop(Timer.java:556)
    at java.base@11.0.8/java.util.TimerThread.run(Timer.java:506)

但是线程没有提到哪个线程锁定了0x2fa1056c对象。没有其他线程堆栈提到有关0x2fa1056c对象的任何内容。大多数其他线程正在等待计时器线程持有的0x13e30613对象,这会导致类似死锁的情况。如何确定哪个线程拥有0x2fa1056c对象?
编辑:包含日志的要点https://gist.github.com/riteshksriv/3b249eb56e0500a9234cd2470152d730

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题