线程的五种状态
线程一共有5种状态,
- 创建状态(NEW)
- 就绪状态
- 运行状态(RUNNABLE)
- 阻塞状态(TIMED_WAITING,还有WAITING和BLOCKED两种)
- 死亡状态(TERMINATED)
public class TestState {
public static void main(String[] args) {
//创建一个线程
Thread thread = new Thread(new Runnable() {
@Override
public void run() {
for (int i = 0; i < 100; i++) {
try {
Thread.sleep(10);
} catch (InterruptedException e) {
}
}
}
});
//获取线程的第一个状态
Thread.State state = thread.getState();
System.out.println(state);
//启动线程
thread.start();
//获取另一种状态
state=thread.getState();
System.out.println(state);
//如果线程没死亡,循环打印
while (thread.getState()!=Thread.State.TERMINATED){//判断线程是否死亡
try {
Thread.sleep(100);
state=thread.getState();
System.out.println(state);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
执行上图代码,当我们创建了一个thread对象时,线程就进入了创建状态(NEW)。当我们调用了start方法后,线程就进入了就绪状态,等待CPU的调度。如果得到了CPU的调度执行run方法,就进入了运行状态(RUNNABLE)。如果某一刻CPU在执行主线程,此时线程就进入了阻塞状态(TIMED_WAITING)。当run方法执行完后,线程就进入了死亡状态(TERMINATED)。
注意
当线程进入死亡状态,就无法再调用start方法。