ConcurrentHashMap
2 つのスレッドが を呼び出しput()
、メソッド内で永久に待機しているように見えるという奇妙な問題に遭遇しましたUnsafe.park()
。外側から見ると、内部は行き詰まりのように見えますConcurrentHashMap
。
これまでのところ、これが発生したのは 1 回だけです。
これらの症状を引き起こす可能性のある何かを考えられる人はいますか?
編集: 関連するスレッドのスレッド ダンプは次のとおりです。
"[編集済み] スレッド 2" prio=10 tid=0x000000005bbbc800 nid=0x921 条件 [0x0000000040e93000] で待機中 java.lang.Thread.State: WAITING (パーキング) at sun.misc.Unsafe.park(ネイティブメソッド) - <0x00002aaaf1207b40> を待機するパーキング (java.util.concurrent.locks.ReentrantLock$NonfairSync) java.util.concurrent.locks.LockSupport.park(LockSupport.java:158) で java.util.concurrent.locks.AbstractQueuedSynchronizer.parkAndCheckInterrupt (AbstractQueuedSynchronizer.java:747) で java.util.concurrent.locks.AbstractQueuedSynchronizer.acquireQueued (AbstractQueuedSynchronizer.java:778) で java.util.concurrent.locks.AbstractQueuedSynchronizer.acquire (AbstractQueuedSynchronizer.java:1114) で java.util.concurrent.locks.ReentrantLock$NonfairSync.lock(ReentrantLock.java:186) で java.util.concurrent.locks.ReentrantLock.lock(ReentrantLock.java:262) で java.util.concurrent.ConcurrentHashMap$Segment.put(ConcurrentHashMap.java:417) で java.util.concurrent.ConcurrentHashMap.put (ConcurrentHashMap.java:883) で [編集済み] "[編集済み] スレッド 0" prio=10 tid=0x000000005bf38000 nid=0x91f 条件 [0x000000004151d000] で待機中 java.lang.Thread.State: WAITING (パーキング) at sun.misc.Unsafe.park(ネイティブメソッド) - <0x00002aaaf1207b40> を待機するパーキング (java.util.concurrent.locks.ReentrantLock$NonfairSync) java.util.concurrent.locks.LockSupport.park(LockSupport.java:158) で java.util.concurrent.locks.AbstractQueuedSynchronizer.parkAndCheckInterrupt (AbstractQueuedSynchronizer.java:747) で java.util.concurrent.locks.AbstractQueuedSynchronizer.acquireQueued (AbstractQueuedSynchronizer.java:778) で java.util.concurrent.locks.AbstractQueuedSynchronizer.acquire (AbstractQueuedSynchronizer.java:1114) で java.util.concurrent.locks.ReentrantLock$NonfairSync.lock(ReentrantLock.java:186) で java.util.concurrent.locks.ReentrantLock.lock(ReentrantLock.java:262) で java.util.concurrent.ConcurrentHashMap$Segment.put(ConcurrentHashMap.java:417) で java.util.concurrent.ConcurrentHashMap.put (ConcurrentHashMap.java:883) で [編集済み]