线程的各种状态

2.线程的各种状态

线程在创建的时候处于新建状态。线程在被启动后〔调用start()方法〕处于就绪状态。线程在CPU的等待队列中等待操作系统分配CPU给它时,若操作系统分配了CPU给这道线程,那么该线程就处于真正的运行状态。当运行完成时,线程就进入消亡状态。

线程在运行状态时,可能因为一些原因(如要打印、要等待数据等)要让出CPU,此时线程进入阻塞状态。处于阻塞状态的线程当重新具有获得CPU的条件时,就再次进入就绪状态,等待分配CPU。处于运行状态的线程也可能因为占用CPU的时间片到了,被操作系统剥夺CPU而重新进入就绪队列,等待再次获得CPU。线程的主要状态转换以及可调用的Java方法如图2.12.1所示。

图2.12.1 线程状态转换示意图