线程在一个完整的生命周期中,一般有五种状态:
新建:当一个Thread类或子类的对象被声明或创建时,新生的线程对象处于新建状态
就绪:处于新建状态的线程被start()后,将进入线程队列等待CPU时间片,此时它已具备了运行的条件,只是没分配到CPU资源.
运行:当就绪的线程被调度并获得CPU资源时,便进入运行状态,run()方法定义了线程的操作和功能.
阻塞:在某种特殊情况下,被认为挂起或执行输出操作时,让出CPU并临时终止自己的执行,进入阻塞状态[运行->阻塞:
sleep()、join()、等待同步锁、wait()、过时方法(挂起):suspend()会导致死锁]
死亡:线程完成了它的全部工作或线程被提前强制性地终止或出现异常导致结束.
阻塞不可以是线程的最终状态,线程正常状态下的的归宿只有一个:死亡.
image.png