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

    一、五种状态
    这是从 操作系统 层面来描述的
    1.【初始状态】仅是在语言层面创建了线程对象,还未与操作系统线程关联
    2.【可运行状态】(就绪状态)指该线程已经被创建(与操作系统线程关联),可以由 CPU 调度执行
    3.【运行状态】指获取了 CPU 时间片运行中的状态,当 CPU 时间片用完,会从【运行状态】转换至【可运行状态】,会导致线程的上下文切换
    4.【阻塞状态】如果调用了阻塞 API,如 BIO 读写文件,这时该线程实际不会用到 CPU,会导致线程上下文切换,进入【阻塞状态】等 BIO 操作完毕,会由操作系统唤醒阻塞的线程,转换至【可运行状态】
      与【可运行状态】的区别是,对【阻塞状态】的线程来说只要它们一直不唤醒,调度器就一直不会考虑调度它们
    5.【终止状态】表示线程已经执行完毕,生命周期已经结束,不会再转换为其它状态 

     二、六种状态

    这是从 Java API 层面来描述的,根据 Thread.State 枚举,分为六种状态
    1.NEW 线程刚被创建,但是还没有调用 start() 方法
    2.RUNNABLE 当调用了 start() 方法之后,注意,Java API 层面的 RUNNABLE 状态涵盖了 操作系统 层面的
    【可运行状态】、【运行状态】和【阻塞状态】(由于 BIO 导致的线程阻塞,在 Java 里无法区分,仍然认为是可运行)
    3.BLOCKED , WAITING , TIMED_WAITING 都是 Java API 层面对【阻塞状态】的细分
    4.TERMINATED  当线程代码运行结束
  • 相关阅读:
    优化!优化!
    JavaScript 错误
    js 学习总结
    JavaScript join() 方法
    JavaScript shift() 方法
    JavaScript split() 方法
    arTemplate解析语法
    getTime 方法
    PHP 5 数据类型
    thinkphp 实现微信公众号开发(二)--实现自定义菜单
  • 原文地址:https://www.cnblogs.com/hejunhong/p/12555255.html
Copyright © 2011-2022 走看看