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

  • 相关阅读:
    Core 1.0中的管道-中间件模式
    java平台的常用资源
    C#设备处理类操作
    C#语音录制
    Web中的性能优化
    nginx+lua+redis构建高并发应用(转)
    HttpLuaModule——翻译(Nginx API for Lua) (转)
    Nginx各版本的区别
    Linux(Centos)中tcpdump参数用法详解(转)
    我见过最好的vsftpd配置教程(转)
  • 原文地址:https://www.cnblogs.com/dagreentree/p/13353214.html
Copyright © 2011-2022 走看看