线程的生命周期可以通过查看Thread 的源码来看。
Thread这个类中有一个 State
的枚举类,其中定了了线程的6种状态
public enum State {
NEW,
RUNNABLE,
BLOCKED,
WAITING,
TIMED_WAITING,
TERMINATED;
}
这6种状态之间的关系我大致画了 如下的一个图:
下面对这几个状态做一一介绍
状态名 | 解释 |
---|---|
NEW | 线程创建完毕但是还么有启动,也就是一个线程对象刚被 new 出来 但是还没有去调用他的 start() 方法 |
RUNNABBLE | 调用了start() 方法,线程正在运行 |
TERMINATED | 线程终止,也就是一个线程结束了 |
BLOCKED | 线程阻塞,可以调用sleep 方法,进入这个状态,sleep 方法不会释放资源,从而导致阻塞 |
WAITING | 线程等待,调用notify 唤醒 |
TIMED_WAITING | 等待超时,可以设置一个超时时间,过了超时时间自动回到RUNABLE状态 |
关于这6种状态之间的相互转换,在后续的章节中,还会做进一步的介绍。