JAVA - 线程从创建到死亡的几种状态都有哪些?
2024-08-27 19:38:38
JAVA - 线程从创建到死亡的几种状态都有哪些?
- 新建( new ):新创建了一个线程对象。
- 可运行( runnable ):线程对象创建后,其他线程(比如 main 线程)调用了该对象 的 start ()方法。该状态的线程位于可运行线程池中,等待被线程调度选中,获取 cpu 的使用权 。
- 运行( running ):可运行状态( runnable )的线程获得了 cpu 时间片( timeslice ) ,执行程序代码。
- 阻塞( block ):阻塞状态是指线程因为某种原因放弃了 cpu 使用权,也即让出了 cpu timeslice ,暂时停止运行。直到线程进入可运行( runnable )状态,才有 机会再次获得 cpu timeslice 转到运行( running )状态。阻塞的情况分三种:
(一). 等待阻塞:运行( running )的线程执行 o . wait ()方法, JVM 会把该线程放 入等待队列( waitting queue )中。
(二). 同步阻塞:运行( running )的线程在获取对象的同步锁时,若该同步锁 被别的线程占用,则 JVM 会把该线程放入锁池( lock pool )中。
(三). 其他阻塞: 运行( running )的线程执行 Thread . sleep ( long ms )或 t . join ()方法,或者发出了 I / O 请求时, JVM 会把该线程置为阻塞状态。 当 sleep ()状态超时、 join ()等待线程终止或者超时、或者 I / O 处理完毕时,线程重新转入可运行( runnable )状态。 - 死亡( dead ):线程 run ()、 main () 方法执行结束,或者因异常退出了 run ()方法,则该线程结束生命周期。死亡的线程不可再次复生。
最新文章
- SQLServer文件收缩-图形化+命令
- [LeetCode] The Skyline Problem 天际线问题
- CSS3和jQuery实现的自定义美化Checkbox
- hibernate的三表查询
- 自己写一个JS单向数据流动库----one way binding
- Appium之python API
- linux 查看服务器性能常用命令
- IIS负载均衡-Application Request Route详解第二篇:创建与配置Server Farm(转载)
- 说说 PWA 和微信小程序--Progressive Web App
- codeVS1966 乘法游戏
- 在ASP.NET MVC中验证checkbox 必须选中 (Validation of required checkbox in Asp.Net MVC)
- 101个直接可以拿来用的JavaScript实用功能代码片段(转)
- rsync配置
- Extjs 4.2.0 MVC 架构
- Java学习——接口Interface
- 嵌入式Linux学习(二)
- Github windows客户端简单上手教程
- Xcode and #pragma mark
- 在Bootstrap开发中解决Tab标签页切换图表显示问题
- 初步了解Owin