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控制它。

  • 相关阅读:
    SpringCloud之Eureka注册中心原理及其搭建
    微服务架构及其概念
    SpringBoot(十六)-----Springboot整合JPA
    SpringBoot(十五)-----Springboot配合JDBCTemplate实现增删改查
    MYSQL安装报错 -- 出现Failed to find valid data directory.
    SpringBoot(十四)-----异常处理
    JQuery 隔行变色
    C#断开式连接
    C# 学生表的插入操作
    C#字符串
  • 原文地址:https://www.cnblogs.com/dagreentree/p/13353214.html
Copyright © 2011-2022 走看看