- Thread.State --> 查看JDK帮助文档
- 线程状态是虚拟机状态,如下:
- NEW
尚未启动的线程
- RUNNABLE
在Java虚拟机中执行的线程处于这个状态
- BLOCKED
被阻塞等待监视器锁定的线程处于此状态
- WAITING
正在等待另一个线程执行特定动作的线程处于此状态
- TIMED_WAITING
正在等待另一个线程执行动作达到指定等待时间的线程处于此状态
- TERMINATED
已退出的线程处于此状态
- 一个线程可以在给定时间点处于一个状态。这些状态是不反映任何操作系统线程状态的虚拟机状态。
public class TestState {
public static void main(String[] args) {
Thread thread = new Thread(()-> {
for (int i = 0; i < 5; i++) {
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
System.out.println("////");
});
Thread.State state = thread.getState();
System.out.println(state); // new
// 观察启动后
thread.start();
// 观察线程
state = thread.getState();
System.out.println(state); // runnable
//
while (state != Thread.State.TERMINATED){ // 是否终止状态
try {
Thread.sleep(100);
state = thread.getState(); // 更新状态
System.out.println(state); // TIMED_WAITING
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}