如何从JMX获得线程优先级?

时间:2014-12-23 09:02:41

标签: java jmx

我的应用程序需要使用JMX从远程进程创建一个线程转储,所以我以此为出发点: http://www.java2s.com/Code/Java/Development-Class/ThisFullThreadDumpclassdemonstratesthecapabilitytogetafullthreaddumpandalsodetectdeadlockremotely.htm

它使用java.lang.management.ThreadMXBean类来获取ThreadInfo。

但是,jstack的输出包括线程优先级

"pool-5-thread-1" prio=6 tid=0x0000000009da0000 nid=0x1820 waiting on condition   [0x000000000c35e000]
   java.lang.Thread.State: WAITING (parking)
        at sun.misc.Unsafe.park(Native Method) 

如何使用JMX获得此功能?

1 个答案:

答案 0 :(得分:0)

JStack使用JVM调试器接口,而不是通过JMX。这就是它如何获得优先信息。

ThreadMXBean没有公开优先级,因此我需要编写自己的JMX bean或更改客户端以作为调试器进行连接。

您可以通过查看OpenJDK的源代码来了解JStack的工作原理:

http://grepcode.com/file/repository.grepcode.com/java/root/jdk/openjdk/7-b147/sun/tools/jstack/JStack.java#JStack.runThreadDump%28java.lang.String%2Cjava.lang.String[]%29