在我们接触编程时,就开始接触各种生命周期,比如对象的生命周期,程序的生命周期等等,对于线程来说也是存在自己的生命周期,今天我们主要介绍线程的生命周期及其各种状态的转换。
Java线程的生命周期主要有以下六种状态:
New(新创建)
Runnable(可运行)
Blocked(被阻塞)
Waiting(等待)
Timed Waiting(计时等待)
Terminated(被终止)
在我们程序编码中如果想要确定线程当前的状态,可以通过getState()方法来获取,同时我们需要注意任何线程在任何时刻都只能是处于一种状态。
1.New 新建状态
首先我们展示一下整个线程状态的转换流程图,下面我们将进行详细的介绍讲解,如下图所示,我们可以直观的看到六种状态的转换,首先左侧上方是 NEW 状态,这是创建新线程的状态,相当于我们 new Thread() 的过程。
New 表示线程被创建但尚未启动的状态:当我们用new Thread()新建一个线程时,如果线程没有开始运行start()方法,那么线程也就没有开始执行run()方法里面的代码,那么此时它的状态就是New。而一旦线程调用了start()方法,它的状态就会从New变成Runnable,进入到图中绿色的方框。
2.Runnable 可运行状态
Java中的Runnable状态对应操作系统线程状态中的两种状态,分别是Running和Ready,也就是说,Java中处于Run