"ожидание" против "ожидание блокировки" против "заблокировано" в дампах потока Java - PullRequest
0 голосов
/ 22 мая 2019

Просматривая дамп потока, я вижу несколько BLOCKED-потоков, но некоторые из них «ожидают блокировки», а некоторые «ожидают включения», пока существует только один поток RUNNABLE, который предположительно получил блокировку.У меня вопрос: почему некоторые «ждут, чтобы заблокировать», а другие «ждут»?Кроме того, поток, «ожидающий включения», кажется, имеет блокировку, но не является потоком RUNNABLE, который фактически удерживает блокировку, так как он говорит, что заблокировал объект по адресу ниже в трассировке стека, так почему он блокируется, если у него есть блокировка(или у него нет блокировки)?

Примеры ниже: заблокированный объект находится по адресу 0x00000000c2ad4be8

в ожидании

"ajp-bio-10032-exec-15" daemon prio=10 tid=0x00007f888c02d000 nid=0x74c8 in Object.wait() [0x00007f8821792000]
   java.lang.Thread.State: BLOCKED (on object monitor)
    at java.lang.Object.wait(Native Method)
    - waiting on <0x00000000c2ad4be8> (a java.lang.Object)
    at java.lang.Object.wait(Object.java:503)
    at com.tibco.tibjms.TibjmsxLinkTcp.disconnect(TibjmsxLinkTcp.java:1026)

в ожидании блокировки

"ajp-bio-10032-exec-95" daemon prio=10 tid=0x00007f888c089800 nid=0x1e66 in Object.wait() [0x00007f881df4b000]
   java.lang.Thread.State: BLOCKED (on object monitor)
    at java.lang.Object.wait(Native Method)
    - waiting on <0x00000000c2ad4be8> (a java.lang.Object)
    at java.lang.Object.wait(Object.java:503)
    at com.tibco.tibjms.TibjmsxLinkTcp.disconnect(TibjmsxLinkTcp.java:1026)
    - locked <0x00000000c2ad4be8> (a java.lang.Object)
    at com.tibco.tibjms.TibjmsConnection._close(TibjmsConnection.java:2430)

и, наконец, поток RUNNABLE

"ajp-bio-10032-exec-142" daemon prio=10 tid=0x00007f888c0b7000 nid=0x3657 runnable [0x00007f88167d4000]
   java.lang.Thread.State: RUNNABLE
    at java.lang.Thread.start0(Native Method)
    at java.lang.Thread.start(Thread.java:713)
    - locked <0x00000000f022c5e0> (a com.tibco.tibjms.TibjmsxLinkTcp$LinkReader)
    at com.tibco.tibjms.TibjmsxLinkTcp.start(TibjmsxLinkTcp.java:968)
    - locked <0x00000000c2ad4be8> (a java.lang.Object)
...