最直接方式是调用Thread.currentThread()获取当前线程对象,再通过getName()、getId()、getState()、getPriority()、isDaemon()等方法获取基本信息;getStackTrace()返回堆栈跟踪数组用于调试;isAlive()和isInterrupted()分别判断存活与中断状态;getAllStackTraces()可获取所有活跃线程快照但需谨慎使用。

Java 中获取当前正在执行的线程信息,最直接的方式是调用 Thread.currentThread() 获取当前线程对象,再通过其方法读取名称、ID、状态、优先级、堆栈等信息。
获取基本线程属性
当前线程对象提供了多个公开方法,可快速获取关键信息:
- getName():返回线程名称(默认形如 "Thread-0",可自定义)
- getId():返回唯一长整型 ID,JVM 内全局唯一
-
getState():返回
Thread.State枚举值,如RUNNABLE、WAITING、BLOCKED等 - getPriority():返回线程优先级(1–10,默认为 5)
- isDaemon():判断是否为守护线程
查看线程调用栈(堆栈跟踪)
用 getStackTrace() 可获得当前线程的执行路径,适合调试或监控:
- 返回
StackTraceElement[],每个元素代表栈中一帧(类名、方法名、行号) - 若线程已终止或无权限(如安全管理器限制),可能返回空数组
- 简单打印示例:
for (StackTraceElement e : Thread.currentThread().getStackTrace()) {
System.out.println(e);
}
检查线程是否存活或被中断
运行时状态判断也很实用:
立即学习“Java免费学习笔记(深入)”;
-
isAlive():返回
true表示线程已启动且尚未终止(包括 RUNNABLE、BLOCKED、WAITING 等状态) - isInterrupted():检查当前线程是否被中断(不重置中断状态)
- Thread.interrupted():静态方法,检查并**清除**当前线程的中断状态
获取所有活跃线程快照(需谨慎使用)
若需观察 JVM 中其他线程,可用 Thread.getAllStackTraces():
- 返回
Map<Thread, StackTraceElement[]>,包含所有活跃线程及其栈轨迹 - 仅包含已启动且未终止的线程;不包含已结束或尚未 start() 的线程
- 注意:该方法会触发线程遍历,在高并发或敏感场景下慎用,避免性能影响


















