java 中thread 获取线程id为啥默认从10开始
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java 中thread 获取线程id为啥默认从10开始相关的知识,希望对你有一定的参考价值。
参考技术A从源码中分析线程的id是从0开始的
如你所说,这个数字正好是10
在编码的过程中你完全不用关心这个数字,这个数字由jvm维护且自增。当某个线程销毁后它的id可能会被重用
如何在 Java 中获取线程 NID(本机 ID)
【中文标题】如何在 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 中thread 获取线程id为啥默认从10开始的主要内容,如果未能解决你的问题,请参考以下文章
如何获得thread线程的threadlocals的key值