2014-12-13 5 views
0

У меня есть ситуация, когда на некоторых ReentrantReadWriteLock существует множество потоков, но по какой-то причине владелец неизвестен.Владелец замка неизвестен в IBM JVM версии 7

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

Это потому, что существует поток владельца?
Почему JVM не освобождает замок?
Могут ли быть другие причины?

ответ

0

Эта нить припаркована и не заблокирована. Потоки входят в припаркованное состояние через API java.util.concurrent.
Припаркованные потоки указываются как припаркованные на объект-блокиратор, которые были переданы в базовый метод , если такой объект был поставлен. Если объект-блокиратор не был указан, потоки отображаются как Parked on: <unknown>.
Если объект, переданный методу park(), расширяет класс java.util.concurrent.locks.AbstractOwnableSynchronizer и использует методы этого класса для отслеживания владения потоком, тогда отображается информация о потоке владения. Если объект не использует класс AbstractOwnableSynchronizer, то нисходящий поток указан как <unknown>.
Для получения более подробной информации ознакомьтесь с Blocked thread information в центре знаний IBM (который является источником этого ответа).