请教各位
如下方内容 有60多个 parking to wait for AbstractQueuedSynchronizer
如何知道是代码那个位置?在调用引起的? 从上面信息看 都是 jdk自己的包
"http-nio-8080-exec-143" #134589 daemon prio=5 os_prio=0 tid=0x00007ffaa8022000 nid=0x8359 waiting on condition [0x00007ff9f39fa000]
java.lang.Thread.State: TIMED_WAITING (parking)
at sun.misc.Unsafe.park(Native Method)
- parking to wait for <0x00000006c30df2a0> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
at java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:215)
at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos(AbstractQueuedSynchronizer.java:2078)
at java.util.concurrent.LinkedBlockingQueue.poll(LinkedBlockingQueue.java:467)
at org.apache.tomcat.util.threads.TaskQueue.poll(TaskQueue.java:89)
at org.apache.tomcat.util.threads.TaskQueue.poll(TaskQueue.java:33)
at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1073)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1134)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Thread.java:748)
不是吧,一般你根据top查看内存消耗比较大的线程,然后去找那个线程
这个线程被挂起了,waiting on condition:等待区等待、被park。TIMED_WATING,指有时限的等待另一个线程的特定操作。看看是不是哪里执行了LockSupport.park()