简述

以下类图展示了线程生命周期中不同的状态。我们可以创建一个线程并启动它,但是线程状态从Runnable、Running、Blocked等状态的变化取决于系统线程调度器,java本身并不能完全控制。

线程状态

New(新建状态)

当我们用new创建一个线程对象时,线程的状态是***新建状态***,这个状态并不代表线程已经执行了,只是Java编程中的一个内部状态

Runnable(就绪状态)

当我们调用线程实例对象的start()方法时,它的状态变成了*Runnable(就绪状态)*****,这是状态下线程调度器将会调动它

Running(运行状态)

当线程被线程调度器调度后,它的状态变成了Running(运行状态),CPU开始执行这个线程。一个线程的状态之所以可以变为Runnable, Dead 或 Blocked,取决于时间切片

Blocked/Waiting(阻塞/等待状态)

一个线程处于阻塞状态是因为等待其它线程执行完成或等待其它资源。一旦一个线程阻塞状态结束,它的状态将变成Runnable状态并且它将被转移到可执行线程池

Dead(死亡)

一旦线程执行完成,它的状态将被转换为Dead(死亡)

最新文章

  1. Ehcache 缓存使用
  2. gridview 经典
  3. 【转】Win 7 下源码运行OpenERP7.0
  4. StringBuffer的用法
  5. java中四种操作(dom、sax、jdom、dom4j)xml方式详解与比较
  6. Windows Phone 8本地化多语言支持
  7. CSS概要
  8. Android ListView 设置单选
  9. ASP.NET Core 入门
  10. java设计模式---构建者模式
  11. 二、PHP基本语法 - PHP零基础快速入门
  12. 性能测试过程中oracle数据库报ORA-27301 ORA-27302错
  13. IdentityServer4授权和认证
  14. 联盟链初识以及Fabric环境搭建流程
  15. 洛谷P3987 我永远喜欢珂朵莉~(set 树状数组)
  16. PYTHON-模块定义 搜索路径
  17. fiddler工具能干啥
  18. 网络游戏程序员须知 UDP vs TCP(转)
  19. UE如何使用正则表达式
  20. GridView的简单使用

热门文章

  1. 使用JWT的ASP.NET CORE令牌身份验证和授权(无Cookie)——第1部分
  2. SQL Join的应用(转)
  3. Centos7:solr伪集群(SolrCloud)搭建
  4. 转:idea类名出现了不同的颜色
  5. VUE生产环境打包build
  6. 1 .net中自定义事件的步骤
  7. idea 党用快捷键
  8. Delphi 10.3.2试用报告
  9. shell查询MySQL并将结果写入文件中
  10. Redis Sentinel机制与用法说明