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

  • 相关阅读:
    cp备份操作时如何忽略指定的目录
    Wordpress“固定链接”页面出现404原因及解决方法
    CentOS7上搭建WEB服务器
    坑爹的云服务安全组
    java spring hibernate
    电脑性能
    android subclipse subversive
    android 开发 程序中下载安装APK文件 问题汇总 解析程序包时出现问题
    android sqlite datetime demo
    android SurfaceView中播放视频 按视频的原始比例播放
  • 原文地址:https://www.cnblogs.com/dagreentree/p/13353214.html
Copyright © 2011-2022 走看看