在 java 中获取线程 id 最直接的方式是调用 thread.currentthread().getid(),该方法返回一个唯一的 long 类型标识符。对于新创建的线程对象,也可以通过实例方法 thread.getid() 获取其 id。需要注意的是,id 在 jvm 生命周期内唯一,但可能复用。

如何区分主线程与子线程的 ID
主线程和子线程的 ID 是不同的数值,可以通过比较它们的返回值来确认当前执行上下文。通常主线程 ID 较小且固定,而子线程 ID 由 JVM 动态分配。

public class ThreadIdDemo {
public static void main(String[] args) {
long mainId = Thread.currentThread().getId();
System.out.println("Main Thread ID: " + mainId);
Thread subThread = new Thread(() -> {
long subId = Thread.currentThread().getId();
System.out.println("Sub Thread ID: " + subId);
}, "Worker-1");
subThread.start();
try {
subThread.join();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
运行上述代码后,控制台将输出类似以下结果:
Main Thread ID: 1 Sub Thread ID: 12
其中 1 通常是主线程 ID,12 是子线程 ID。每次运行结果中子线程 ID 可能不同,但主线程 ID 保持不变。

线程 ID 是否会在程序运行期间发生变化
线程 ID 在线程存活期间不会改变。一旦线程被创建并启动,其 ID 就固定不变,直到线程终止。即使线程进入阻塞或等待状态,ID 也不会变化。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











