美文网首页
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