我正在分析一个应用程序挂起,通过线程转储,我有 90% 的工作线程处于这种状态:
“pool-3-thread-352”#13082 prio=5 os_prio=0 tid=0x00007ff6407fc800 nid=0x1e94 等待条件 [0x00007ff5a53b4000]
java.lang.Thread.State: TIMED_WAITING (parking) at sun.misc.Unsafe.park(Native Method) - 在 java.util.concurrent 停车等待 <0x000000044af6bcd0> (a java.util.concurrent.SynchronousQueue$TransferStack) .locks.LockSupport.parkNanos(LockSupport.java:215) 在 java.util.concurrent.SynchronousQueue$TransferStack.awaitFulfill(SynchronousQueue.java:460) 在 java.util.concurrent.SynchronousQueue$TransferStack.transfer(SynchronousQueue.java:362) ) 在 java.util.concurrent.SynchronousQueue.poll(SynchronousQueue.java:941) 在 java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1073) 在 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java: 1134) 在 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) 在 java.lang.Thread。运行(线程.java:748)“pool-21-thread-214”#13081 prio=5 os_prio=0 tid=0x0000000002e6a800 nid=0x1e92 等待条件 [0x00007ff5a54b5000]
java.lang.Thread.State: TIMED_WAITING (parking) at sun.misc.Unsafe.park(Native Method) - 在 java.util.concurrent 停车等待 <0x00000004ad95fba8> (a java.util.concurrent.SynchronousQueue$TransferStack) .locks.LockSupport.parkNanos(LockSupport.java:215) 在 java.util.concurrent.SynchronousQueue$TransferStack.awaitFulfill(SynchronousQueue.java:460) 在 java.util.concurrent.SynchronousQueue$TransferStack.transfer(SynchronousQueue.java:362) ) 在 java.util.concurrent.SynchronousQueue.poll(SynchronousQueue.java:941) 在 java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1073) 在 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java: 1134) 在 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) 在 java.lang.Thread。运行(线程.java:748)
根据我的理解,这些基本上是 tomcat 服务器上的请求工作线程,在阻塞队列中等待直到请求到来。当请求到来时,一个线程将获得许可并运行以执行请求。 …
分析线程转储,我有许多线程正在等待锁定已经锁定的监视器.在下面的示例中,同时提取并锁定监视器0x000000044158d3d0.
关于这个案子的任何线索?
"ORB Run Thread" #124 prio=5 os_prio=0 tid=0x00007f16a81b6800
nid=0x76f3 in Object.wait() [0x00007f165eef2000]
java.lang.Thread.State: WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
- waiting on <0x000000044158d3d0> (a java.lang.Object)
at java.lang.Object.wait(Object.java:502)
at com.sun.corba.se.impl.orb.ORBImpl.run(ORBImpl.java:1238)
- locked <0x000000044158d3d0> (a java.lang.Object)
at org.wildfly.iiop.openjdk.service.CorbaORBService$ORBRunner.run(CorbaORBService.java:241)
at java.lang.Thread.run(Thread.java:748)
Run Code Online (Sandbox Code Playgroud)