参考:https://www.cnblogs.com/albertrui/p/8383799.html
线程的生命周期分为new、runnable、running、blocked、terminated五种状态。
new:新建状态,当程序使用new关键字创建了一个线程之后,该线程就处于新建状态,此时仅由JVM为其分配内存,并初始化其成员变量的值
runnable:就绪状态,当线程对象调用了start()方法之后,该线程处于就绪状态。Java虚拟机会为其创建方法调用栈和程序计数器,等待调度运行
running:运行状态,如果处于就绪状态的线程获得了CPU,开始执行run()方法的线程执行体,则该线程处于运行状态
blocked:阻塞状态,当处于运行状态的线程失去所占用资源之后,便进入阻塞状态
terminated:终止状态,线程在run()方法执行结束后进入死亡状态。此外,如果线程执行了interrupt()或stop()方法,那么它也会以异常退出的方式进入死亡状态。
线程状态转换图: