//查看线程的所有状态
public class State {
public static void main(String[] args) {
for (Thread.State state:Thread.State.values()){
System.out.println(state);
}
}
}
NEW:创建了线程,但未start();
RUNNABLE:start()后;为可运行状态,又可分为Running(得到时间片正在工作中)和Ready(未得到时间片但即将开始工作处于就绪状态);
BLOCKED:阻塞状态,遇到了锁(锁被其他线程占用),因此需要等待其他线程释放锁,然后它得到锁才可进入RUNNABLE状态;
WAITING:等待状态(没有明确的等待时间,无限期等待);
TIMED_WAITING:超时等待状态(有明确的等待时间);
TERMINATED:终止状态,线程结束。
使用 isAlive()方法:
BLOCKED、WAITING、TIMED_WAITING都为存活状态(true);
NEW、TERMINATED都为false;