线程的状态到底有几种?

Source

直接贴上定义线程状态的枚举源码

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种,需要和线程的生命周期区分下,线程的生命周期可参考本篇博客【了解线程的生命周期】。

发布了213 篇原创文章 · 获赞 214 · 访问量 3万+