zoukankan      html  css  js  c++  java
  • 线程的状态

    线程的六种状态

    1、当我们new一个线程时,还没有调用start()该线程处于新建状态。

    2、线程调用start()方法时候,他会被线程调度器来执行,也就是交给操作系统来执行了,那么操作系统来执行的时候,这整个的状态交Runnable,

      Runnable内部有两个状态(1)Ready就绪状态(2)Running运行状态。就绪状态是说扔到CPU的等待队列里面去排队等待CPU运行,等真正

      扔到CPU上运行的时候才叫Running运行状态。(调用yiled时候会从Running状态跑到Ready状态去,线程调度器选中执行的时候又从Ready

      状态跑到Running状态去)

    3、线程顺利执行完了就会进入(3)Teminated结束状态(Teminated完了之后还可不可以回到new状态再调用start?这是不行的,完了就是结束了)

      在Runnable这个状态里还有其他一些状态的变迁(4)TimeWaiting等待(5)Waiting等待(6)Blocked阻塞。在同步代码块的情况下没得到锁

      就会阻塞状态,获得锁的时候是就绪状态。

    问题1:哪些是JVM管理的?哪些是操作系统管理的?

      上面这些状态全是由JVM管理的,因为JVM管理的时候也要通过操作系统,所以操作系统和那个是JVM分不开,JVM是跑在操作系统上的一个普通程序。

    问题2:线程什么状态时候会被挂起?挂起是否也是一个状态?

      Running的时候,在一个cpu上会跑很多个线程,cpu会隔一段时间执行这个线程一下,再隔一段时间执行那个线程一下,这个是cpu内部的一个调度,

      把这个状态线程扔出去,从running扔回去就叫线程被挂起,cpu控制它。

  • 相关阅读:
    ZZ
    Qt5获取网卡/IP等信息
    platforms
    [转]如何使用VS 2013發布一個可以在Windows XP中獨立運行的可執行文件
    spring cloud 服务提供者
    spring cloud: eureka搭建
    通过maven 上传jar 到nexus3,cong nexus3下载jar
    搭建turbine时 hystrix MaxConcurrentConnections reached 异常
    Zuul超时问题,微服务响应超时,zuul进行熔断
    微信公众号开发网址
  • 原文地址:https://www.cnblogs.com/dagreentree/p/13353214.html
Copyright © 2011-2022 走看看