2013-11-26 24 views
6

我有一个应用程序的threaddump显示3个线程如下。java threadump“等待条件”的意义

===============

"http-443-11" daemon prio=10 tid=0x00000000473bc800 nid=0x3590 waiting on condition [0x0000000061818000] 
    java.lang.Thread.State: WAITING (parking) 
    at sun.misc.Unsafe.park(Native Method) 
    - parking to wait for <0x00000007612a3880> (a java.util.concurrent.Semaphore$NonfairSync) 

"http-443-4" daemon prio=10 tid=0x00000000451f6000 nid=0x243a waiting on condition [0x0000000055354000] 
    java.lang.Thread.State: WAITING (parking) 
    at sun.misc.Unsafe.park(Native Method) 
    - parking to wait for <0x00000007612a3880> (a java.util.concurrent.Semaphore$NonfairSync) 

"http-443-7" daemon prio=10 tid=0x000000004602e000 nid=0x2974 waiting on condition [0x000000005e6e7000] 
    java.lang.Thread.State: WAITING (parking) 
    at sun.misc.Unsafe.park(Native Method) 
    - parking to wait for <0x00000007612a3880> (a java.util.concurrent.Semaphore$NonfairSync) 

===============

是什么意义“等待条件[]”? []中的数字表示什么?

回答

0

在线程堆栈中,我们可以看到线程是守护线程并等待任务前来。由于这些线程是在JVM启动时创建的,因此它们不会被杀死,除非JVM退出或任何非守护进程线程没有运行,因此它们将等待任务的到来。说垃圾收集线程是可能不会一直运行的daemoon线程,它可能处于等待状态。

+0

我们看到的3个线程是守护程序线程 - 由Tomcat AppServer创建。不过,这些线程并不是在“JVM”启动时创建的。 – anjanb