前言
线程的生命周期分为五种状态:新建状态、就绪状态、运行状态、阻塞状态、死亡状态
提示:以下是本篇文章正文,详细介绍状态之间的转换关系。
一、新建状态
刚new出来的线程对象。新建状态调用start()方法就进入就绪状态。
二、就绪状态
就绪状态的线程又叫做可运行状态,表示当前线程具有抢夺CPU时间片的权利(CPU时间片就是执行权)。当一个线程抢夺到CPU时间片之后就开始执行run()方法。run()方法的执行标志着线程进入运行状态。
三、运行状态
run()方法的执行标志着线程进入运行状态,当之前占有的CPU时间片用完之后,会重新回到就绪状态,继续抢夺CPU时间片,当再次抢到CPU时间片之后,会重新进入run()方法接着上一次的代码继续往下执行。
四、阻塞状态
当一个线程遇到阻塞时间,例如接收用户键盘输入的信息,或者sleep()、join()方法等,此时线程会进入阻塞状态,阻塞状态的线程会放弃之前占有的CPU时间片和相关资源。
五、死亡状态
run()方法的结束标志着线程的死亡。
六、线程调度
有哪些和线程调度有关呢?下一章讲述与线程调度有关的方法。