You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Windows与Linux操作系统线程状态完整标准列表及现代分类解析

现代线程状态的标准分类与核心状态解析

不同资料里的线程状态分类差异,主要是因为观察视角不同——有的从操作系统内核调度层做了简化,有的是早期多线程框架的细分扩展,但目前行业内认可度最高的现代分类,是主流编程语言(Java、Python、C#等)遵循的标准化核心状态体系,以Java的Thread.State为典型代表,包含6种核心状态:

  • NEW(新建状态):线程对象已经创建,但还没调用start()方法。此时线程还没被操作系统调度器纳入管理,不会执行任何代码逻辑。
  • RUNNABLE(可运行状态):调用start()后进入该状态,它包含两种实际场景:要么线程正在CPU上执行(对应你提到的executing),要么在就绪队列里等着CPU分配时间片。操作系统层面不区分这两种子场景,统一视为可被调度的状态。
  • BLOCKED(阻塞状态):线程因为等待锁资源(比如Java里的synchronized锁)而暂停执行。一旦拿到锁,会立刻回到RUNNABLE状态。
  • WAITING(无限等待状态):线程主动触发无时限等待,比如调用Object.wait()、无参的Thread.join()或者LockSupport.park()。这种状态下,线程必须靠其他线程主动唤醒(比如Object.notify())才能回到RUNNABLE状态。
  • TIMED_WAITING(计时等待状态):线程进入有时限的等待,比如调用Thread.sleep(long)、带超时参数的Object.wait(long)或Thread.join(long)。等待时间到了之后,线程会自动唤醒,回到RUNNABLE状态。
  • TERMINATED(终止状态):线程的run()方法执行完毕,或者因为未捕获的异常导致终止。此时线程彻底失去执行能力,再也无法切换到其他状态。

另外你提到的suspended这类状态,属于早期多线程框架的扩展状态,现代主流标准里已经不再将其列为核心状态——因为手动暂停/恢复线程的操作很容易引发死锁、资源不一致等问题,被大部分现代编程语言弃用。

内容的提问来源于stack exchange,提问作者Hovanella

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 11:25:36