【问题标题】:Tomcat thread waiting on and locking the same resourceTomcat线程等待并锁定相同的资源
【发布时间】:2012-10-11 09:52:18
【问题描述】:

考虑以下 Java\Tomcat 线程转储:

"http-0.0.0.0-4080-4" daemon prio=10 tid=0x0000000019a2b000 nid=0x360e in Object.wait() [0x0000000040b71000]
   java.lang.Thread.State: WAITING (on object monitor)
    at java.lang.Object.wait(Native Method)
    - waiting on <0x00002ab5565fe358> (a org.apache.tomcat.util.net.JIoEndpoint$Worker)
    at java.lang.Object.wait(Object.java:485)
    at org.apache.tomcat.util.net.JIoEndpoint$Worker.await(JIoEndpoint.java:458)
    - locked <0x00002ab5565fe358> (a org.apache.tomcat.util.net.JIoEndpoint$Worker)
    at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:484)
    at java.lang.Thread.run(Thread.java:662)

这是一个僵局吗?似乎同一个资源 (0x00002ab5565fe358) 既是 locked 又是 waited on - 这是什么意思?

【问题讨论】:

    标签: java multithreading tomcat concurrency locks


    【解决方案1】:

    它更像是一个无限等待()。它会说 id1 在 id2 拥有的监视器上被 BLOCKED

    【讨论】:

    • 好的,我查看了 JioEndpoint.Worker 的源代码。正如我认为第 453 行的 await() 方法是同步的,并且在第 484 行的 run() 方法中有一个对它的开放调用。
    • 能否请您详细说明您的答案并添加解决方案以便我接受?
    猜你喜欢
    • 2021-03-16
    • 2013-12-13
    • 1970-01-01
    • 1970-01-01
    • 2017-01-03
    • 1970-01-01
    • 2017-08-26
    • 1970-01-01
    • 2018-10-07
    相关资源
    最近更新 更多