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

  • 相关阅读:
    5-1
    浅谈sql中的in与not in,exists与not exists的区别
    理解SQL SERVER中的分区表
    SQLSERVER SQL性能优化
    SQL Server Profiler使用方法
    SQL Server中的三种Join方式
    执行计划
    执行计划sql
    INSERT INTO SELECT
    设计模式学习笔记-单例模式
  • 原文地址:https://www.cnblogs.com/dagreentree/p/13353214.html
Copyright © 2011-2022 走看看