这是从操作系统层面来描述的

image.png

每个状态描述

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