• 多线程之——线程的状态


    线程的生命周期:


    线程是相对独立的、可调度的执行单元,因为在线程的执行过程中,会分别处在不同的状态。通常而言,线程主要有下列几种运行状态:
    1. 就绪状态: 即线程已经具备了运行的状态,等待调度程序分配CPU资源给这个线程运行(即随时准备着抢占CPU资源)。
    2. 运行状态:   调度程序分配CPU资源给该线程,该线程正在执行(已经抢到了CPU资源)。
    3. 阻塞状态:   线程正在等待某个条件符合或者某个事件发生,才会具备运行的条件(大多数情况是正在执行sleep()方法,即休眠了)。

    线程状态的转换


     对线程的基本操作主要有以下5种,通过这5种操作,使得线程在各个状态之间转换

    派生

    派生属于线程,可以由进程派生出线程,线程所拥有的资源将会被创建。一个线程既可以由进程派生(如派生主线程),也可以由其他线程派生(如主线程派生子线程)。在Java中,可以创建一个线程并通过调用该线程的start()方法使该线程进入就绪状态(即处于可以抢占CPU资源的状态)。
    调度
    调度程序分配CPU资源给就绪状态的线程,使线程获得CPU资源进行运行,即执行Java线程类中的run()方法里的内容(抢到了CPU资源并已经开始执行线程)。
    阻塞
    正在运行状态的线程,在执行过程中需要等待某个条件符合或某个事件发生,此时线程进入阻塞状态。阻塞时,寄存器上下文。程序计数器以及堆栈指针都会得到保存。
    激活
    在阻塞状态下的线程,如果需要等待的条件符合或事件发生,则该线程被激活并进入就绪状态(随时可以抢占CPU资源)
    结束
    在运行状态的线程,线程执行结束,他的寄存器上下文以及对战信息等内容将被释放。

  • 相关阅读:
    [OpenGL(C)] 旋转立体三角形
    [MSSQL] (命令)列出所有表.字段名.主键.类型.长度.小数位数等信息
    [端口] 端口大全及端口关闭方法
    [网络] IP的划分,超详细
    [C++] 面向对象院校管理系统
    [JSVM2] (开源)JS星际争霸(for JSVM2)
    [MSSQL,MySQL,Oracle] Join用法
    [其它] .NET 世界排名榜
    [C] (回溯法)计算总费用最小费用
    [OpenGL(Win32)] 3D 轮廓字体
  • 原文地址:https://www.cnblogs.com/Mus-Li/p/6728729.html
Copyright © 2020-2023  润新知