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  当线程代码运行结束
  • 相关阅读:
    华为 简单OSPF实验
    华为 基于MAC地址的VLAN划分
    完全背包
    01背包问题
    90. 子集 II
    Java去除字符串中的特殊符号或者指定的字符
    Java查找指定文件夹下的所有文件
    Java面试基础
    Spring获取ApplicationContext
    JSP & EL & JSTL
  • 原文地址:https://www.cnblogs.com/hejunhong/p/12555255.html
Copyright © 2011-2022 走看看