接上篇《Java并发技术总结之二——ThreadLocal》
线程有六种状态:NEW, RUNNABLE(RUNNING), WAITING, TIME_WAITING, BLOCKED, TERMINATED。
线程刚刚被创建的时候,即 new Thread(),且尚未执行 start() 方法的状态;
RUNNABLE(或称 READY) 与 RUNNING 是线程已经准备执行或正在执行的状态,是线程执行了 start() 方法之后状态。线程处于 RUNNABLE 或者是 RUNNING 状态,取决于 CPU 的调度,获取了 CPU 使用权的线程处于 RUNNING 状态,否则处于就绪状态 (RUNNABLE)。进入该状态的方法如下:
WAITING 为等待状态,需要进行某些特定动作之后才能回到正常的运行状态,时间不确定 。进入该状态的方法如下:
TIME_WAITING 同样为等待状态,也需要进行某些特定动作才能回到正常运行状态。与 WAITING 方法不同的是 TIME_WAITING 状态的时间是确定的。进入该状态的方法如下:
BLOCKED 状态是在获取锁过程中被阻塞的状态,通常用于 synchronized, lock 的使用场景中。进入该状态的方法如下:
TERMINATED 状态标志着一个线程的结束,处于 TERMINATED 状态的线程不能再转变为其他状态。进入该状态的方法如下: