【第 24 天】多线程篇 - 运行状态

多线程篇 - 线程的运行状态

线程的五种状态:

[1] 新建<br />在实例化后,且在调用 start() 方法之前,线程处于创建状态,仅分配了内存空间,处于线程的生命周期初始状态<br />
[2] 就绪<br />调用 start() 方法后处于就绪状态,此时线程具有除 CPU 之外的所有资源,在排队等待 CPU, 由系统调度(JVM 里的线程调度器)为其分配<br />
[3] 运行<br />处于就绪状态的线程获取 CPU 资源后即处于运行状态,执行 run() 方法。处于运行状态的线程可变为 阻塞状态、就绪状态和死亡状态 <br />
[4] 阻塞/等待<br />执行了 sleep() suspend()挂起 等方法,失去所占用的资源后,处于阻塞状态。<br />特别注意的是,阻塞状态和就绪状态的等待不同是:就绪状态只缺 CPU 资源,阻塞是由各种原因引起的线程不能运行,不仅缺少 CPU 资源。<br />可再细分为:<br />

  • 等待阻塞:运行状态的线程执行 wait() 方法后
  • 同步阻塞:在获取 synchronized 同步锁失败后(同步锁被其它线程占用)
  • 其它阻塞:调用 sleep() 或 join() 发出 I/O 请求时。
    <br />
    [5] 死亡<br />执行完 run() 方法的内容或被强制终止时。线程的整个生命周期结束 <br />
  • 可参见同级路径下的 images 文件夹图片

今日的知识点在代码注释中较多,回顾时多看源码

https://github.com/satan1a/Java300Days/tree/master/x24%20day/checkThread

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 本文将循序渐进的介绍js面向对象的基础知识。 什么是面向对象呢? 面向对象编程 (OOP : Object Ori...
    乘着风阅读 1,144评论 0 4
  • 没事不要想些 不可能的事情
    人悲欢阅读 234评论 0 0
  • 说是 纷繁杂扰 写却 空空如也 放下 起立 汗浸 水淋 老调听吼 旧忆突袭 起笔 静静落幕 . . . . . .
    钓鱼那些事阅读 699评论 1 3
  • 二十二点二十八分,我的心又再一次萌动了。寂寞寂寞就好,熟悉的铃声打断了我的意动。阿心打来电话祝我元宵快乐,我们俩都...
    玖璦阅读 236评论 0 0