我访问了一个临时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
暂无答案!
目前还没有任何答案,快来回答吧!