一、线程状态

线程的状态转换是线程控制的基础。线程状态总的可分为五大状态:分别是生、死、可运行、运行、等待/阻塞。用一个图来描述如下:

1、新状态:线程对象已经创建,还没有在其上调用start()方法。

2、可运行状态:当线程有资格运行,但调度程序还没有把它选定为运行线程时线程所处的状态。当start()方法调用时,线程首先进入可运行状态。在线程运行之后或者从阻塞、等待或睡眠状态回来后,也返回到可运行状态。

3、运行状态:线程调度程序从可运行池中选择一个线程作为当前线程时线程所处的状态。这也是线程进入运行状态的唯一一种方式。

4、等待/阻塞/睡眠状态:这是线程有资格运行时它所处的状态。实际上这个三状态组合为一种,其共同点是:线程仍旧是活的,但是当前没有条件运行。换句话说,它是可运行的,但是如果某件事件出现,他可能返回到可运行状态。

5、死亡态:当线程的run()方法完成时就认为它死去。这个线程对象也许是活的,但是,它已经不是一个单独执行的线程。线程一旦死亡,就不能复生。如果在一个死去的线程上调用start()方法,会抛出java.lang.IllegalThreadStateException异常。

转载于:https://www.cnblogs.com/BambooEatPanda/p/4915800.html

Java线程状态的改变相关推荐

  1. java 线程状态_Java线程为何没有Running状态?我猜你不知道。

    作者:国栋原文:https://my.oschina.net/goldenshaw/blog/705397 Java虚拟机层面所暴露给我们的状态,与操作系统底层的线程状态是两个不同层面的事.具体而言, ...

  2. java 线程状态_面试官问:为什么Java线程没有Running状态?我懵了

    点击上方"占小狼的博客",选择"设为星标" 本文阅读时间大约4分钟. 来源:https://dwz.cn/dLRLBZab Java虚拟机层面所暴露给我们的状态 ...

  3. java 线程状态_【19期】为什么Java线程没有Running状态?

    Java虚拟机层面所暴露给我们的状态,与操作系统底层的线程状态是两个不同层面的事.具体而言,这里说的 Java 线程状态均来自于 Thread 类下的 State 这一内部枚举类中所定义的状态: 什么 ...

  4. Java线程状态流转及部分函数说明

    下面这张是Java线程状态改变的图例. 下面就其中几点和函数进行说明 运行态 Java将操作系统中的"运行中running"和"就绪ready"两种状态统称为运 ...

  5. 【Java多线程】Java线程状态及转换方法详解

    文章目录 1. 现代操作系统中的线程状态及转换(5种) 2. Java 线程状态(6种) 2.1 NEW 创建 2.2 RUNNABLE 运行 2.3 BLOCKED 阻塞 2.4 WAITING 等 ...

  6. 面试必备,Java线程状态之细节回顾

    点击上方"方志朋",选择"设为星标" 做积极的人,而不是积极废人 来源:https://dwz.cn/vYqjShos Java线程有6种状态 在某个给定时间点 ...

  7. Java线程状态及 wait、sleep、join、interrupt、yield等的区别

    Java中的线程状态(详见Java线程状态及转换-MarchOn): wait:Object类的实例方法,释放CPU执行权,进入等待状态,直到  被中断.被拥有该对象锁的线程唤醒(notify或not ...

  8. java runnable wait_面试官:都说阻塞 I/O 模型将会使线程休眠,为什么 Java 线程状态却是 RUNNABLE?...

    摘要: 原创出处 https://studyidea.cn 「公众号:程序通事 」欢迎关注和转载,保留摘要,谢谢! 使用 Java 阻塞 I/O 模型读取数据,将会导致线程阻塞,线程将会进入休眠,从而 ...

  9. java线程切换 notify_浅谈 Java线程状态转换及控制

    作者:城北有个混子 出自:博客园 1.线程的状态(系统层面) 一个线程被创建后就进入了线程的生命周期.在线程的生命周期中,共包括新建(New).就绪(Runnable).运行(Running).阻塞( ...

  10. Java 线程状态之 TIMED_WAITING

    定义 一个正在限时等待另一个线程执行一个动作的线程处于这一状态. A thread that is waiting for another thread to perform an action fo ...

最新文章

  1. 手把手教你用Python进行回归(附代码、学习资料)
  2. WebKit DOM Event (二)
  3. JS简单正则得到字符串中特定的值
  4. 恶意造谣水滴筹的违法分子已被警方依法处理
  5. C++ override什么意思
  6. PMP第十一章:项目风险管理
  7. Trie树(字典树)
  8. 信用卡积分兑换里程全攻略
  9. CubeMX中配置外设引脚重映射
  10. clickhouse表引擎-合并树系列
  11. 没有计算的推理和基于推理的计算 逻辑与算法之五
  12. 计算机大赛算法,计算机经典算法——锦标赛排序算法
  13. PPT做的图插入word变糊解决方案
  14. 华为交换机配置常用命令
  15. 使用java代码实现扫码登录
  16. backtrack回溯算法
  17. 【SSM-报销单】6.报销单-个人报销单,待处理报销单
  18. HKEY_CURRNT_USER和HKEY_LOCAL_MACHINE的区别
  19. python函数绘制表格_练习:使用python turtle制作表格
  20. 通过Maven快速搭建Spring Boot父工程

热门文章

  1. js对于radio的处理
  2. 打开你的脑洞:NER如何进行数据增强 ?
  3. Python字符串中常用的方法
  4. 一文了解预训练语言模型!
  5. 星巴克——最单纯的SNS应用
  6. PyTorch:模型训练-分布式训练
  7. idea创建springcloud项目_新手向,十分钟快速创建 Spring Cloud 项目
  8. mysql的cost
  9. 在Vue项目中添加vue router
  10. Vuex actions 异步操作基础