JAVA - 线程从创建到死亡的几种状态都有哪些?

  1. 新建( new ):新创建了一个线程对象。
  2. 可运行( runnable ):线程对象创建后,其他线程(比如 main 线程)调用了该对象 的 start ()方法。该状态的线程位于可运行线程池中,等待被线程调度选中,获取 cpu 的使用权 。
  3. 运行( running ):可运行状态( runnable )的线程获得了 cpu 时间片( timeslice ) ,执行程序代码。
  4. 阻塞( 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 )状态。
  5. 死亡( dead ):线程 run ()、 main () 方法执行结束,或者因异常退出了 run ()方法,则该线程结束生命周期。死亡的线程不可再次复生。

最新文章

  1. SQLServer文件收缩-图形化+命令
  2. [LeetCode] The Skyline Problem 天际线问题
  3. CSS3和jQuery实现的自定义美化Checkbox
  4. hibernate的三表查询
  5. 自己写一个JS单向数据流动库----one way binding
  6. Appium之python API
  7. linux 查看服务器性能常用命令
  8. IIS负载均衡-Application Request Route详解第二篇:创建与配置Server Farm(转载)
  9. 说说 PWA 和微信小程序--Progressive Web App
  10. codeVS1966 乘法游戏
  11. 在ASP.NET MVC中验证checkbox 必须选中 (Validation of required checkbox in Asp.Net MVC)
  12. 101个直接可以拿来用的JavaScript实用功能代码片段(转)
  13. rsync配置
  14. Extjs 4.2.0 MVC 架构
  15. Java学习——接口Interface
  16. 嵌入式Linux学习(二)
  17. Github windows客户端简单上手教程
  18. Xcode and #pragma mark
  19. 在Bootstrap开发中解决Tab标签页切换图表显示问题
  20. 初步了解Owin

热门文章

  1. Hadoop本地编写的jar包放到集群执行时报错处理
  2. Z-blog csrf漏洞学习
  3. python---virtualenv创建管理虚拟环境
  4. 虚拟机安装linux
  5. js 查找数组中某个字符出现的次数
  6. VSCode 前端常用插件集合
  7. input输入框自动填充的问题
  8. python学习-Day19
  9. XCTF练习题---MISC---Recover-Deleted-File
  10. [AcWing 36] 合并两个排序的链表