观察线程的所有状态
public class ThreadState {
public static void main(String[] args) {
for (Thread.State state : Thread.State.values()) {
System.out.println(state);
}
}
}
这个线程状态说的是Thread对象(有自己的生命周期)的状态,并不是PCB的状态
线程共有6种状态:NEW、RUNNABLE、BLOCKED、WAITING、TIMED_WAITING、TERMINATED。分别对应于:新建、运行、阻塞、等待、带超时的等待、终止。
1.NEW: 创建一个Java线程,但还没有调用start()方法,也就是没有参与CPU调度,此时就是一个Java对象
2. RUNNABLE: 运行或在就绪队列中(PCB的就绪队列).
3.TERMINATED: 线程执行完成,PCB在操作系统中已销毁,但是Java对象还在
4.TIMED_WAITING:等待一段时间(有时间限制的等待)(过时不候)
5.WAITING: 没有时间限制的等待(死等)
6.BLOCKED: 等待锁的时候进入的阻塞状态