美文网首页
jvm中线程分为哪些状态

jvm中线程分为哪些状态

作者: 凉风拂面秋挽月 | 来源:发表于2020-03-03 22:23 被阅读0次

    jvm中线程分为哪些状态

    jdk中的注释如下:

    public enum State {
            NEW, // 初始化,还没开始执行
            RUNNABLE, // 可执行
            RUNNING//执行
            BLOCKED, // 锁定(阻塞?)
            WAITING, // 等待
            TIMED_WAITING, // 超时等待
            TERMINATED; // 执行完成
        }
    

    在jvm中一共有线程一共有六种状态。需要注意的是,这个只是jvm中的线程状态,并不是操作系统中的线程状态。操作系统的线程状态中还有一个就绪状态(ready)
    引用

    image.png

    在执行Thread.start()方法后,线程是不是马上运行?

    不是。在调用Thread的start方法后,Thread的状态变为RUNNABLE。那么现在这个线程到底有没有运行呢?查看jdk源码可知,start方法中调用的是start0的native方法,由他调用底层真正地在操作系统创建一个线程。
    操作系统创建的线程马上就会运行吗?答案是否定的。线程需要被cpu调度,分配了时间片之后才会真正的运行。因此jvm中的RUNNABLE状态其实对应了两个状态,ready和runnable。创建的新线程是ready状态,被cpu调度后成为runnale状态,这时候才是真正的运行状态。

    相关文章

      网友评论

          本文标题:jvm中线程分为哪些状态

          本文链接:https://www.haomeiwen.com/subject/hfmllhtx.html