线程生命周期的六种状态
进程有生命周期,一般在学操作系统的时候讲,线程也有生命周期,一般学编程语言的时候会讲,有的把线程生命周期分为五种状态,有的分为六种状态,还有的分为七种状态。面试的时候,我觉得还是答6种。
线程的状态在Java中定义在Thread类中的一个枚举类State中,
public enum State {
NEW,
RUNNABLE,
BLOCKED,
WAITING,
TIMED_WAITING,
TERMINATED;
}
所以说分为6种状态没毛病吧,源码就是这么写的。这六种状态分别表示的含义是:
状态名称 | 说明 |
---|---|
NEW | 初始状态,线程被创建,但是还没有调用start()方法 |
RUNNABLE | 运行状态,Java线程对操作系统中的就绪(READY)和运行中(RUNNING)两种状态的统称 |
BLOCKED | 阻塞状态,表示线程阻塞于锁 |
WAITING | 等待状态,当前线程需要等待其他线程做出一些特定动作(通知或中断) |
TIMED_WAITING | 超时等待状态,可以在指定的时间自行返回 |
TERMINATED | 终止状态,表示当前线程已经执行完毕 |