12.3 线程的生命周期及状态转换
在Thread类中有一个静态枚举常量public static enum Thread.State用于表示线程的状态。在Java中,线程的状态包括:
NEW:新建,线程被创建但尚未被启动;
RUNNABLE:运行,此线程正处于被Java虚拟机执行中,这个状态又可以分为就绪(READY)和正在运行(RUNNING)两个状态;
BLOCKED:阻塞,线程因为锁被阻塞;
WAITING:等待,线程处于永久等待状态直到被唤醒或造成等待的原因消失;
TIMED_WAITING:计时等待,线程处于计时等待状态直到等待时间结束;
TERMINATED:消亡,线程已经执行结束或者发生异常。
下面先来了解一些与线程操作相关的常用方法,如表12.2所示。
表12.2 Thread操作的常用方法(https://www.daowen.com)

表12.3中列出了java.lang.Object类中关于线程操作的一些常用方法。
表12.3 Object的常用方法

在程序运行过程中,通过一些操作可以使线程在不同状态之间进行转换,如图12.10所示。

图12.10 线程状态转换图
图12.10中展示了线程的状态和状态之间的转换,下面将对线程的6个状态以及它们之间的转换进行详细讲解。