Владелец блокировки неизвестен в IBM JVM версии 7

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

3XMTHREADBLOCK     Parked on:
java/util/concurrent/locks/ReentrantReadWriteLock$NonfairSync@0xC3C0E5E8 Owned by: <unknown>

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

1 ответ

Решение

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

Другие вопросы по тегам