package cn.breeziness123.zhx;
/**
* 认识线程的几个状态:新生状态、就绪状态、运行状态、阻塞状态、死亡状态
* 在API中线程状态分为五个状态:NEW 、RUNNABLE、 BLOCK、 WAITING、TIMED_WAITING、 TERMINATED
* new:尚未启动的线程
* Runnable:JVM中执行的线程,包括就绪和运行状态
* Block: 被阻塞等待监视器锁定的线程处于这个状态、wait()方法和IO的read()、write()方法下进如此状态,
* Waiting: 正在等待另一个线程执行特定动作的线程处于这个状态
* Timed_waiting: 正在等待另一个线程执行特定动作达到指定时间的线程处于这个状态
* Terminated:已退出的线程处于这个状态
*/
public class ThreadDemo04 {
public static void main(String[] args) {
Thread th = new Thread(() -> {
try {
Thread.sleep(1000);//这个线程sleep 1秒钟
} catch (InterruptedException e) {
e.printStackTrace();
}
});
Thread.State state = th.getState();
System.out.println(state);//new状态
th.start();
state = th.getState();
System.out.println(state);//Runnable状态
for (int i = 0; i < 5; i++) {
try {
Thread.sleep(200);//每0.5秒区观察th线程的状态
state = th.getState();
System.out.println(state);//Timed_waiting状态
} catch (InterruptedException e) {
e.printStackTrace();
}
}
state = th.getState();
System.out.println(state);//Terminated状态
}
}