线程的生命周期和状态
- NEW: 初始状态,线程被创建出来但没有被调用
start()
。 - RUNNABLE: 运行状态,线程被调用了
start()
等待运行的状态。 - BLOCKED:阻塞状态,需要等待锁释放。
- WAITING:等待状态,表示该线程需要等待其他线程做出一些特定动作(通知或中断)。
- TIME_WAITING:超时等待状态,可以在指定的时间后自行返回而不是像 WAITING 那样一直等待。
- TERMINATED:终止状态,表示该线程已经运行完毕。
类的生命周期
类从被加载到虚拟机内存中开始到卸载出内存为止,它的整个生命周期可以简单概括为 7 个阶段:加载(Loading)、验证(Verification)、准备(Preparation)、解析(Resolution)、初始化(Initialization)、使用(Using)和卸载(Unloading)。
其中,验证、准备和解析这三个阶段可以统称为连接(Linking)。
线程池的生命周期
RUNNING
:运行状态,接受新的任务并且处理队列中的任务。
SHUTDOWN
:关闭状态
(
调用了
shutdown
方法
)
。不接受新任务,
但是要处理队列中的任务。
STOP
:停止状态
(
调用了
shutdownNow
方法
)。不接受新任务,也不处理队列中的任务,并且要中断正在处理的任务。
TIDYING
:所有的任务都已终止了,
workerCount
为
0,线程池进入该状态后会调terminated() 方法进入 TERMINATED 状态。
TERMINATED
:终止状态,
terminated() 方法调用结束后的状态。
![](https://img-blog.csdnimg.cn/6b87c117eb7d415caf298566bce63d9c.png)