2014-12-13 51 views
0

我有一些情況,在某些ReentrantReadWriteLock上阻塞了很多線程,但由於某些原因未知所有者。IBM JVM版本7中未知的鎖的擁有者

3XMTHREADBLOCK  Parked on: 
java/util/concurrent/locks/[email protected] Owned by: <unknown> 

這是因爲所有者線程已存在?
爲什麼JVM不能釋放鎖?
會有其他原因嗎?

回答

0

此線程已停放且未被阻止。線程通過java.util.concurrent API進入停放狀態。
如果提供了這樣的對象,則駐留的線程將被列爲停放在傳遞給基礎方法的阻止對象上。如果未提供阻止程序對象,則線程將列爲Parked on: <unknown>
如果傳遞給park()方法的對象擴展了java.util.concurrent.locks.AbstractOwnableSynchronizer類,並使用該類的方法跟蹤擁有的線程,則會顯示有關擁有線程的信息。如果對象不使用AbstractOwnableSynchronizer類,則擁有的線程將列爲<unknown>
有關更多詳細信息,請參閱IBM知識中心(此答案的來源)中的Blocked thread information