Несколько потоков Java, похоже, блокируют один и тот же монитор?

В дампе потоков Java я обнаружил следующее:

"TP-Processor184" daemon prio=10 tid=0x00007f2a7c056800 nid=0x47e7 waiting for monitor entry [0x00007f2a21278000]
   java.lang.Thread.State: BLOCKED (on object monitor)
    at org.apache.jackrabbit.core.state.SharedItemStateManager.getNonVirtualItemState(SharedItemStateManager.java:1725)
    - locked <0x0000000682f99d98> (a org.apache.jackrabbit.core.state.SharedItemStateManager)
    at org.apache.jackrabbit.core.state.SharedItemStateManager.getItemState(SharedItemStateManager.java:257)

"TP-Processor137" daemon prio=10 tid=0x00007f2a7c00f800 nid=0x4131 waiting for monitor entry [0x00007f2a1ace7000]
   java.lang.Thread.State: BLOCKED (on object monitor)
    at org.apache.jackrabbit.core.state.SharedItemStateManager.getNonVirtualItemState(SharedItemStateManager.java:1725)
    - locked <0x0000000682f99d98> (a org.apache.jackrabbit.core.state.SharedItemStateManager)
    at org.apache.jackrabbit.core.state.SharedItemStateManager.getItemState(SharedItemStateManager.java:257)

Дело в том, что оба потока заблокировали монитор (независимо от того, они теперь ждут двух других мониторов).

Анализатор дампа потоков, когда выбран этот монитор, действительно говорит «Монитор блокировки потоков: 2» внизу и «Блокировка 2 потоков».См. https://lh4.googleusercontent.com/-fCmlnohVqE0/T1D5lcPerZI/AAAAAAAAD2c/vAHcDiGOoMo/s971/locked_by_two_threads_3.png для вставки снимков экрана, мне не разрешено вставлять изображения здесь.

Означает ли это, что дампы потоков не атомарны в отношении информации о блокировках монитора? Я не могу представить, что это действительно ошибка блокировки JVM (1.6.0_26-b03).

Подобный вопрос уже задавался в Могут ли несколько потоков удерживать блокировку на одном мониторе в Java? , но в ответе мне не было видно реального смысла того, что несколько потоков блокируют один и тот же монитор. , даже если они могут ждать другого.

Обновление от 13 мая 2014 г .:

Новый вопрос Несколько потоков содержат одну и ту же блокировку? имеет код для воспроизведения поведения, и @rsxg отправил соответствующий отчет об ошибке https: // bugs .openjdk.java.net / browse / JDK-8036823 в соответствии с его ответом здесь.

11
задан Community 23 May 2017 в 12:29
поделиться