如何在 Java 中获取线程 NID(本机 ID)

Posted

技术标签:

【中文标题】如何在 Java 中获取线程 NID(本机 ID)【英文标题】:How To Get Thread NID(Native ID) in java 【发布时间】:2015-12-11 07:08:36 【问题描述】:

“remoting-jmx client-thread-4”守护进程prio=6 tid=0x000000000f86b000 nid=0x20e0 >等待条件[0x000000000b82e000] java.lang.Thread.State:TIMED_WAITING(停车) 在 sun.misc.Unsafe.park(本机方法) - 停车等待 (a >java.util.concurrent.SynchronousQueue$TransferStack) 在 java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:226) 在 >java.util.concurrent.SynchronousQueue$TransferStack.awaitFulfill(SynchronousQue>ue.java:460) 在 >java.util.concurrent.SynchronousQueue$TransferStack.transfer(SynchronousQueue.j>ava:359) 在 java.util.concurrent.SynchronousQueue.poll(SynchronousQueue.java:942) 在 >java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1068) 在 >java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130) 在 >java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) 在 java.lang.Thread.run(Thread.java:745)

在这个线程转储中,我们有线程 Nid。这个 Nid 我如何从 java 代码中的线程中获取它。

【问题讨论】:

你不能。它没有 API。 【参考方案1】:

这是一个gist,它显示了如果您可以在应用程序中包含来自project lombok 的lombok.jar 和来自JDK 的sa-jdi.jar,如何获取NID。

【讨论】:

以上是关于如何在 Java 中获取线程 NID(本机 ID)的主要内容,如果未能解决你的问题,请参考以下文章

如何从视图行中获取节点 ID?

java如何读取本机硬盘ID号码?

Java如何获取正在运行的线程的Id

jvm调优

单个 java 线程如何一次执行多个本机方法?

关于java获取登录用户id的问题