线程的生命周期包括新建、就绪、运行、阻塞和死亡5种状态,那么结合编程,这5种状态是怎么存在的呢
1.新建
当程序使用new关键字创建一个线程后,该线程就处于新建状态,此时,与其他java对象一样,仅有java虚拟机为其分配内存,初始化成员变量。
2.就绪
当线程对象调用start()方法后,线程就处于就绪状态,java虚拟机为其创建方法调用栈与程序计数器,关于该线程何时执行,取决于JVM里线程调度器的调度
3.运行
当就绪状态的线程获得CPU,开始执行run方法时,该线程就处于运行状态,这一步不是代码可以控制的,是由底层平台控制的。
4.阻塞
当线程调用sleep()方法、调用suspend()方法,调用一个阻塞式IO方法等时,线程就进入阻塞状态
5.死亡
当线程run()方法执行结束、线程抛出一个未捕获的异常、直接调用线程的stop()方法,线程就会死亡。测试某个线程是否死亡,可以采用isAlive()方法。
图示如下: