java - 如何从 JMX 获取线程优先级?

标签 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 获得它?

最佳答案

JStack 使用 JVM 调试器接口(interface)进行连接,而不是通过 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

关于java - 如何从 JMX 获取线程优先级?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27617091/

相关文章:

java - gitlab-CI 不使用 maven 和 java 10 构建?

java - 使用 和 数组打印破折号

java - 导出延迟初始化的 bean(实现 SelfNaming 并使用 ManagedResource 注释进行注释)会给出 IllegalStateException

java - 使用 JMX 获取远程 JVM 属性

Java将哈希值转换为随机字符串

java - Umask jsvc 日志文件

java - 致命异常 : CameraX-audio encoding thread

java - 通过java列出weblogic中的所有用户

java - 在不向客户端公开方法的情况下更新 JMX MBean 属性

java - 用于 Mysql SSL 客户端身份验证和 JMX over SSL 设置的 keystore 中的多个证书