Java 语言中线程共有六种状态。
- NEW(初始化状态)
- RUNNABLE(可运行 / 运行状态)
Runable 严格的可以划分为Ready和Running两种状态,均属于Runnable。
Ready:线程具备所有的执行资源,只差OS在CPU上分配可执行时间片段
Running:线程真正执行
- BLOCKED(阻塞状态)
- WAITING(无限时等待)
- TIMED_WAITING(有限时等待)
- TERMINATED(终止状态)
在操作系统层面,Java 线程中的 BLOCKED、WAITING、TIMED_WAITING 是一种状态(休眠状态)。即只要 Java 线程处于这三种状态之一,就永远没有 CPU 的使用权。
如图所示: