我已经对生产中部署的应用程序进行了线程转储,该应用程序使用 logback。我不是分析线程转储的专家,但是,我需要这样做。我正在学习,也看了一些网上的文章。
下面是真实的线程转储:
"logback-8" #136 daemon prio=5 os_prio=0 tid=0x00007f3588001000 nid=0x13a waiting on condition [0x00007f35f8e7b000]
java.lang.Thread.State: WAITING (parking)
at sun.misc.Unsafe.park(Native Method)
- parking to wait for <0x000000068d740338> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175)
at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2039)
at java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:1088)
at java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:809)
at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1067)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1127)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)
正如我所看到的,大多数线程都处于 WAITING 状态。
但我怎么知道他们到底在等什么?这些所有线程是否都试图“等待”“某事”?
我确实阅读了一些在线材料,但是当看到真正的线程转储时,对于如何采取步骤来理解这些线程到底试图做什么以及它们在等待什么,这对我来说没有任何意义,被封锁等
谁能帮我理解这一点吗?
慕斯王
三国纷争
潇湘沐
相关分类