直接贴上定义线程状态的枚举源码
public enum State {
//线程被new出来,还没开始运行就是这状态,对应枚举下标0
NEW,
//线程调用start()方法后就会处在这个状态,不管有没有CPU资源分配给它,对应枚举下标1
RUNNABLE,
//线程等待获取锁的时候就是这个状态,对应枚举下标2
BLOCKED,
//调用了wait(),join()等方法,却没有时间限制,除非有其他线程唤醒或者是中断,否则线程就处于这个状态,对应枚举下标3
WAITING,
//调用了sleep(),wait(),join()等方法,不过设置了时间限制,所以会在指定的时间后自行返回,在这段时间里线程处于这个状态,对应枚举下标4
TIMED_WAITING,
//线程执行完毕,就会变成这状态,对应枚举下标为5
TERMINATED;
}
总结
线程的状态有6种,需要和线程的生命周期区分下,线程的生命周期可参考本篇博客【了解线程的生命周期】。