Java 线程的堆栈跟踪信息,展示了线程的当前状态和执行位置。以下是详细解释:


线程基本信息
"Thread-0" #16 prio=5 os_prio=0 cpu=0.00ms elapsed=16.29s tid=0x00000243105a4130 nid=0x5384 waiting on condition [0x0000007687ffe000]
- 线程名称:
Thread-0(由系统自动命名的线程) - 线程编号:
#16(JVM 内部的唯一编号) - 优先级:
prio=5(默认优先级,范围 1-10) - 操作系统优先级:
os_prio=0(映射到操作系统的优先级) - CPU 时间:
cpu=0.00ms(线程当前占用的 CPU 时间) - 运行时间:
elapsed=16.29s(线程从启动到现在的总时间) - 线程 ID:
tid=0x00000243105a4130(JVM 内部的线程唯一标识符) - 本地线程 ID:
nid=0x5384(操作系统分配的线程 ID) - 线程状态:
waiting on condition(正在等待某个条件触发) - 堆栈地址:
[0x0000007687ffe000](线程堆栈的内存地址)
线程状态信息
java.lang.Thread.State: TIMED_WAITING (sleeping)
- 线程状态:
TIMED_WAITING(限时等待状态) - 具体原因:
sleeping(线程正在执行Thread.sleep())
堆栈跟踪信息
at java.lang.Thread.sleep(java.base@17.0.13/Native Method)
at com.example.testThread.TestJoin$1.run(TestJoin.java:9)
- 第一行:线程正在执行
Thread.sleep()方法(本地方法,由 JVM 实现) - 第二行:
TestJoin类的内部类(TestJoin$1)的run()方法在第 9 行调用了sleep()
代码推测
根据堆栈信息,可以推测 TestJoin.java 的第 9 行代码类似:
public class TestJoin {
public static void main(String[] args) {
Thread t = new Thread(() -> {
try {
// 第9行:线程休眠1000毫秒
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
});
t.start();
}
}
总结
- 线程状态:
Thread-0正在休眠(TIMED_WAITING),等待 1 秒后继续执行。 - 触发原因:代码中显式调用了
Thread.sleep()方法。 - 常见场景:线程需要暂停执行一段时间(如定时任务、资源等待等)。


















