线程状态如图:一共有5种状态,新建(New),就绪(Runnable),运行(Running),阻塞(Blocked),死亡(Dead)

新建状态:在程序中一个线程对象被创建出来,例如:Thread t = new Thread()此时线程处于新建状态,线程中的代码还没有被执行;

就绪状态:顾名思义也就是说线程处于准备执行阶段,随时可以被cpu的调度。当调用该线程对象的toStart()方法时,该线程就进入了就绪状态,此时并不会立刻去执行run()方法,线程还必须同其他线程竞争CPU时间,只有获得CPU时间才可以运行线程。

运行状态:当线程获得CPU时间片后,它才进入运行状态,真正开始执行run()方法中的代码。有可能在时间片消耗完时,run()中的代码还没执行结束,此时线程又进入了Runnable状态,线程只能等待下个时间片被cpu调度,所以线程会处于Runnable,Running交替转换的过程;

阻塞状态:当线程在Running状态中,遇到以下情况,会导致线程进入阻塞状态(Blocked)。处于阻塞状态的线程,在阻塞等待结束之后,会进入Runnable状态,等待获得CPU时间片继续运行程序。

   (1) 等待阻塞 -- 通过调用线程的wait()方法,让线程等待某工作的完成。
   (2) 同步阻塞 -- 线程在获取synchronized同步锁失败(因为锁被其它线程所占用),它会进入同步阻塞状态。
   (3) 其他阻塞 -- 通过调用线程的sleep()或join()或发出了I/O请求时,线程会进入到阻塞状态。当sleep()状态超时、join()(下篇学习)等待线程终止或者超时、或者I/O处理完毕时,线程重新转入就绪状态。

死亡状态:当线程执行完了或者因异常退出了run()方法时,线程生命周期结束。

转载于:https://www.cnblogs.com/ldh666/p/10993860.html

Java多线程学习笔记-线程的状态相关推荐

  1. Java多线程学习笔记-线程的使用

    Java中创建多线程的三种方法 1.继承Thread类创建线程 2.实现Runnable接口创建线程 3.使用Callable和Future创建线程 ------------------------- ...

  2. java多线程学习笔记。

    java多线程学习笔记 线程的优缺点: 多线程的好处: 充分利用多处理核心,提高资源的利用率和吞吐量. 提高接口的响应效率,异步系统工作. 线程的风险: 安全危险(竞争条件):什么坏事都没有发生.在没 ...

  3. Java 多线程学习笔记

    概念 进程 正在运行的程序,是系统进行资源分配和调用的独立单位 每一个进程都有它自己的内存空间和系统资源,一个进程包括由操作系统分配的内存空间,包含一个或多个线程 一个进程一直运行,直到所有的非守护线 ...

  4. 【JAVA多线程学习笔记】(1)实现线程的方式 线程生命周期 操作线程的方法

    文章目录 两种方式实现线程 继承Thread类 模拟银行叫号的程序 Runnable接口 代码1:(与swing相结合创建gui程序) Thread类的⼏个常⽤⽅法 线程生命周期 操作线程的方法 代码 ...

  5. Java 多线程学习笔记(狂神)

    学习视频参考链接:https://www.bilibili.com/video/BV1V4411p7EF?p=27 线程简介 线程的实现(重点) 线程状态 线程同步(重点) 线程通信问题 高级主题(重 ...

  6. Java多线程学习笔记一

    一.关于多线程 Java中的多线程是一个同时执行多个线程的进程.线程是一个轻量级的子进程,是最小的处理单元.线程使用共享内存区域,不分配单独的内存区域以节省内存.Java多线程多用于游戏.动画方面. ...

  7. java多线程学习笔记--一.多线程的基础知识

    需要学习的知识 多线程基础知识讲解 参考索隆和jim的视频,以及自己做的笔记 导读 为了充分利用CPU资源,人们发明了线程和进程 进程 由来:在单核cpu的时期,为了方便操作把一系列的操作的指令写下来 ...

  8. Java多线程学习笔记20之定时器Timer

    详细代码见:github代码地址 本节内容: 定时器Timer的使用及分析 1) 如何实现指定时间执行任务 2) 如何实现按指定周期执行任务 第五章 定时器Timer 定时/计划功能在移动开发领域使用 ...

  9. Java多线程学习(二)---线程创建方式

    线程创建方式 摘要: 1. 通过继承Thread类来创建并启动多线程的方式 2. 通过实现Runnable接口来创建并启动线程的方式 3. 通过实现Callable接口来创建并启动线程的方式 4. 总 ...

  10. java多线程学习笔记(一)

                                       ✟  "In my Father's house are many mansions: if it were not s ...

最新文章

  1. 报名 | IBM苏中:从深蓝到AlphaGo,从大数据到认知商业
  2. Java消息服务JMS详解
  3. target与currentTarget的区别?
  4. clustered index disadvantages in mysql
  5. php pdo预处理查询,关于php:从PDO预处理语句中获取原始SQL查询字符串
  6. 学习记录-交叉编译环境的设置
  7. 【CodeForces - 1082B】Vova and Trophies (贪心模拟,暴力)
  8. JSP 编译原理:JSP 是 Servlet?如何用 Eclipse 查看 JSP 编译生成的 Servlet 源文件?
  9. 大数据之-Hadoop完全分布式_RM启动注意事项---大数据之hadoop工作笔记0041
  10. 使用C#来手动连接 Access 2007数据库
  11. ab服务器网页,使用ab进行web服务器压测详解
  12. 数据:尽管严禁加密货币,中国拥有最多区块链专利
  13. 课外读物积累-----如何提高英文的科研写作能力(摘自施一公寄语)
  14. 管理咨询公司全球前22排名
  15. SQL SERVER 2019卸载和安装
  16. react点击后高亮显示
  17. 令人头大的慢查询分析
  18. RIP实验步骤(RNA Immunoprecipitation)
  19. HDU 4081 Qin Shi Huang‘s National Road System(枚举+倍增优化)
  20. 使用禅道系统工作任务明细指南

热门文章

  1. 总结的一些android公共库
  2. ul在Firefox和IE下的不同表现
  3. 用sqoop从mysql导数hive_使用sqoop从mysql导入到hive基本操作
  4. redis分布式锁的 5个坑
  5. java web 调度_javaweb车辆调度信息管理平台
  6. python文件目录提取_python-按日志提取文件并创建相关目录
  7. 上传文件实时显示网速怎么实现_“双11”来了!三亚1487个5G基站带你拼网速_政务_澎湃新闻...
  8. 7.监控应用和数据可视化 7.1通用健康状态指引器
  9. 【渝粤教育】国家开放大学2019年春季 1396药事管理与法规(本) 参考试题
  10. 【渝粤题库】陕西师范大学290001 计算机网络