我的应用程序需要使用 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 获得它?
最佳答案
JStack 使用 JVM 调试器接口(interface)进行连接,而不是通过 JMX。这就是它获取优先级信息的方式。
据我所知,ThreadMXBean 没有公开优先级,因此您需要编写自己的 JMX bean 或更改客户端以作为调试器进行连接。
您可以通过查看 OpenJDK 的源代码来了解 JStack 的工作原理:
关于java - 如何从 JMX 获取线程优先级?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27617091/