线程通常有五种运行状态:新建,就绪,运行,阻塞,死亡。
1)新建状态(New):当通过创建Thread实例来新建一个线程时,该线程处于新建状态。在这个阶段,线程的start()方法还没有被调用。
2)就绪状态(Runnable):一旦调用了线程的start()方法,线程就进入就绪状态。在就绪状态下,表示线程可以被执行,但不一定立即获取到CPU的执行时间。
3)运行状态(Running):当线程获得CPU执行时间,开始执行线程体中的代码时,线程处于运行状态。
4)阻塞状态(Blocked):在特定情况下,线程可能会被阻塞,无法继续执行。常见的情况包括线程等待其他资源、等待锁、等待输入/输出操作等。一旦阻塞的原因消除,线程将回到就绪状态。
5)死亡状态(Dead):线程run()、main() 方法执行结束,或者因异常退出了run()方法,则该线程结束生命周期。死亡的线程不可再次复生。
相关状态图如下: