需求
某些场景下需要获取java线程的ID以及对应的操作系统线程ID,用来分析java进程的堆栈信息。java 中如何获取线程ID,以及对应的操作系统线程ID?
解决方案
(1)Thread.getId()方法(Java 8及之前版本)
long javaThreadId = Thread.currentThread().getId();
(2)Thread.threadId()方法(Java 19+推荐)
long javaThreadId = Thread.currentThread().threadId();
(3)获取操作系统线程ID(Native Thread ID)需通过JMX接口获取:
public static long getOsThreadPid() {
return ManagementFactory.getThreadMXBean()
.getThreadInfo(Thread.currentThread().getId()).getThreadId();
}

被折叠的 条评论
为什么被折叠?



