前言:如果你去网上搜索一下“线程状态”,会发现众说纷纭,5大状态、6大状态、7大状态等等。网上有: 新建、就绪、可执行、运行、阻塞、锁池、挂起、中断、等待、结束、死亡、停滞等等,看到这些名词,你一定晕了吧?
一、线程状态在哪里看?
在jdk的rt.jar包中,有个Thread线程类,如下

可以看到上面Thread线程类总共包含6个状态。
二、线程的6种状态
| 状态中文名称 | 状态英文名称 | 说明 |
|---|---|---|
| 新建 | new | Thread 类或其子类使用 new 关键字创建一个线程对象后,尚未调用start()方法启动的线程,处于这种状态。 |
| 运行 | runnable | 包括操作系统线程状态中的 Ready 和 Running ,也就是处于此状态的线程有可能正在等待着操作系统为它分配执行时间,也有可能正在执行。【当线程对象调用了start()方法之后,该线程就进入就绪状态Ready。就绪状态的线程处于就绪队列中,要等待JVM里线程调度器的调度,如果获得CPU调度就是在运行中状态Running】 |
| 阻塞 | blocked | 这种状态是指一个阻塞线程在等待monitor锁 |
| 无限期等待 | waiting | 一个线程在等待另一个线程执行一个动作时在这个状态 |
| 限期等待 | timed_waiting | 一个线程在一个特定的等待时间内等待另一个线程完成一个动作会在这个状态 |
| 终止 | terminated | 已终止线程的线程状态,线程已经结束执行。 |
三、线程状态的转换

本文介绍了Java线程的六种状态,包括新建、运行、阻塞、无限期等待、限期等待和终止,并解释了每种状态的含义及如何发生状态转换。
229

被折叠的 条评论
为什么被折叠?



