我的应用程序需要使用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获得此功能?
答案 0 :(得分:0)
JStack使用JVM调试器接口,而不是通过JMX。这就是它如何获得优先信息。
ThreadMXBean没有公开优先级,因此我需要编写自己的JMX bean或更改客户端以作为调试器进行连接。
您可以通过查看OpenJDK的源代码来了解JStack的工作原理: