Java中获取当前线程名称和ID分别使用Thread.currentThread().getName()和Thread.currentThread().getId(),前者返回可自定义的字符串(如"main"或"Thread-0"),后者返回JVM内唯一且不可变的long型ID,适用于日志追踪但不宜用于逻辑判断。

Java 中获取当前线程的名称和 ID 非常简单,直接调用 Thread 类的静态方法即可,无需额外参数或对象引用。
获取当前线程名称
使用 Thread.currentThread().getName() 方法返回当前正在执行的线程名。默认名称如 "main"、"Thread-0" 等,也可在创建线程时自定义。
- 主线程默认名称是 "main"
- 新建线程若未显式命名,JVM 会按 "Thread-N" 自动编号(N 从 0 开始)
- 可通过
thread.setName("MyWorker")设置有意义的名称,便于日志排查
获取当前线程 ID
使用 Thread.currentThread().getId() 获取唯一且不可变的长整型 ID。该 ID 在 JVM 生命周期内全局唯一,但重启后可能重复。
在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。
- ID 是只读的,无法通过 API 修改
- 不同线程的 ID 绝对不重复(同一 JVM 实例中)
- 适合用于日志标记、线程行为追踪,但不建议用于逻辑判断(如相等性校验)
完整示例代码
以下是一个打印当前线程信息的小例子:
立即学习“Java免费学习笔记(深入)”;
public class ThreadInfoDemo {
public static void main(String[] args) {
System.out.println("线程名称: " + Thread.currentThread().getName());
System.out.println("线程 ID: " + Thread.currentThread().getId());
new Thread(() -> {
System.out.println("子线程名称: " + Thread.currentThread().getName());
System.out.println("子线程 ID: " + Thread.currentThread().getId());
}, "CustomWorker").start();
}
}
输出类似:
线程名称: main线程 ID: 1
子线程名称: CustomWorker
子线程 ID: 13
注意事项
-
currentThread()总是返回真正执行该代码的线程对象,不是调用方传入的线程 - 线程名称可重复(不同线程可设同名),但 ID 不可重复
- 在线程池中,复用的线程名称默认不变,建议结合
ThreadFactory统一命名

















