当前位置: 首页 > news >正文

线程的状态:操作系统层面和JVM层面

在操作系统层面,线程有五种状态

初始状态:线程被创建,操作系统为其分配资源。

可运行状态(就绪状态):线程被创建完成,进入就绪队列,参与CPU执行权的争夺。或因为一些原因,从阻塞状态唤醒的线程,重新进入就绪队列,参与CPU时间片的抢夺。

运行状态:线程抢到CPU执行权,进行上下文切换(保存上一条线程执行的数据和环境),执行任务。如果时间片结束,进行上下文切换,重新进入可运行状态。

阻塞状态:某些情况下,线程需要等待其他资源或者进入休眠,进入阻塞状态,等待唤醒。

终止状态:线程进入终止状态,通常发生在线程执行完毕、被中断或被异常退出时。在终止状态中,线程释放了它所占用的资源。

在JVM层面,线程有六种状态(图有点糙....)

 初始状态NEW:线程被创建,系统分配资源。

运行状态RUNNABLE:线程被调用start()方法,进入线程任务的执行。

有限期等待TIMED_WAITING:一般是被指定了超时时间,进入等待,一般会在超时时间结束自动返回,也可以在超时时间内被notify()唤醒,或

无限期等待WAITING:表示该线程需要等待其他线程做出一些特定动作(通知或中断),否则会一直等待下去。

阻塞状态BLOCKED:锁阻塞状态,等待锁释放。

终止状态TERMINATED:当线程执行完毕或因异常退出时,它进入终止状态,释放所有资源。

PS:JVM的RUNNABLE也就是操作系统下的可运行状态和运行状态。

这是因为现在的cpu分片时间很很小,一个时间片大概是10-20ms,每条线程每次处于运行中的状态也就是0.01s-0.02s,就要放弃cpu执行权,进入就绪队列。切换的如此之快,区分这两种状态就没有什么意思了。

http://www.lryc.cn/news/327692.html

相关文章:

  • 在Isaac-sim中弧度转四元数以及四元数转弧度的问题
  • 【计算机网络】高级IO模型
  • LabVIEW电动汽车直流充电桩监控系统
  • 前端学习<二>CSS基础——08-CSS属性:定位属性
  • 88. 合并两个有序数组(javascript)
  • 机器学习_集成学习_梯度提升_回归_决策树_XGBoost相关概念
  • ABAP 字段类型不一样导致相加之后金额错误
  • 【L1距离和L2距离】Manhattan Distance Euclidean Distance 解释和计算公式
  • 自动发卡平台源码优化版,支持个人免签支付
  • 如何使用固定公网地址远程连接Python编译器并将运行结果返回到Pycharm
  • Java设计模式—备忘录模式(快照模式)
  • 没学数模电可以玩单片机吗?
  • FlinkSQL之Flink SQL Join二三事
  • 某某消消乐增加步数漏洞分析
  • SpringBoot动态数据源实现
  • 计算机网络常见题(持续更新中~)
  • 富格林:可信招数揭发防备暗箱陷阱
  • 获取高德安全码SHA1
  • 关于RPC
  • pulsar: kafka on pulsar之把pulsar当kafka用
  • 七月论文审稿GPT第4版:通过paper-review数据集微调Mixtral-8x7b
  • 基于 YOLO V8 Fine-Tuning 训练自定义的目标检测模型
  • 快手,得物,蓝月亮,蓝禾,奇安信,三七互娱,顺丰,康冠科技,金证科技24春招内推
  • 全局UI方法-弹窗二-列表选择弹窗(ActionSheet)
  • Memcached分布式内存对象数据库
  • 华为广告打包报错,问题思考
  • docker-compose mysql
  • PGAdmin 4:用于管理和维护PostgreSQL数据库的强大工具
  • 成都市酷客焕学新媒体科技有限公司:实现品牌的更大价值!
  • 探索数据库--------------mysql主从复制和读写分离