https://www.runoob.com/note/34745

线程共包括以下 5 种状态:

  1. 新建状态(New):
    线程对象被创建后,就进入了新建状态。例如,Thread thread = new Thread()。

  2. 就绪状态(Runnable):
    也被称为“可执行状态”。调用线程对象start()方法便会进入就绪状态。处于就绪状态的线程,随时可能被CPU调度执行。

  3. 运行状态(Running):
    线程获取CPU权限进行执行。需要注意的是,线程只能从就绪状态进入到运行状态。

  4. 阻塞状态(Blocked): 阻塞状态是线程因为某种原因放弃CPU使用权,暂时停止运行。直到线程进入就绪状态,才有机会转到运行状态。

       阻塞的情况分三种:

  • a. 等待阻塞 – 通过调用线程的wait()方法,让线程等待某工作的完成。
  • b. 同步阻塞 – 线程在获取synchronized同步锁失败(因为锁被其它线程所占用),它会进入同步阻塞状态。
  • c. 其他阻塞 – 通过调用线程的sleep()或join()或发出了I/O请求时,线程会进入到阻塞状态。当sleep()状态超时、join()等待线程终止或者超时、或者I/O处理完毕时,线程重新转入就绪状态。
  1. 死亡状态(Dead): 线程执行完了或者因异常退出了run()方法,该线程结束生命周期。

java线程状态、新建状态、运行状态、阻塞状态、等待阻塞、同步阻塞、其他阻塞、死亡状态相关推荐

  1. Java 线程间的通信机制(等待和唤醒机制)

    一. 线程间通信 概念:多个线程在处理同一个资源,但是处理的动作(线程的任务)却不相同. 例如:线程A用来生成包子的,线程B用来吃包子的,包子可以理解为同一资源,线程A与线程B处理的动作,一个是生产, ...

  2. 用Java线程获取优异性能(II)——使用同步连载线程访问关键代码部份

    摘要 开发者有时创建的多线程程序会生成错误值或产生其它奇怪的行为.古怪行为一般出现在一个多线程程序没使用同步连载线程访问关键代码部份的时候.同步连载线程访问关键代码部份是什么意思呢?在这篇文章中解释了 ...

  3. Java线程死亡(死掉、退出、挂掉)的几种情况

    文章目录 1. Java线程死亡的几种情况 2. 验证上述结论 2.1 测试1:线程正常结束后,isAlive()返回False 2.2 测试2:子线程抛出异常之后,线程的isAlive()返回Fal ...

  4. Java线程的5种状态及切换

    ava中的线程的生命周期大体可分为5种状态. 1. 新建(NEW):新创建了一个线程对象. 2. 可运行(RUNNABLE):线程对象创建后,其他线程(比如main线程)调用了该对象的start()方 ...

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

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

  6. new thread后会阻塞主程序吗_阻塞模型将会使线程休眠,为什么 Java 线程状态却是 RUNNABLE?...

    使用 Java 阻塞 I/O 模型读取数据,将会导致线程阻塞,线程将会进入休眠,从而让出 CPU 的执行权,直到数据读取完成.这个期间如果使用 jstack 查看线程状态,却可以发现Java 线程状态 ...

  7. Java 线程的生命周期

    当线程被创建并启动以后,它既不是一启动就进入了执行状态,也不是一直处于执行状态,在线程的生命周期中,它要经过新建(New).就绪(Runnable).运行(Running).阻塞(Blocked)和死 ...

  8. Java线程中断机制-如何中断线程

    Java线程中断机制-如何中断线程 版权声明:本文为博主原创文章,欢迎指正或者转载. https://blog.csdn.net/qq_38663729/article/details/7823264 ...

  9. 啃碎并发(二):Java线程的生命周期

    0 前言 当线程被创建并启动以后,它既不是一启动就进入了执行状态,也不是一直处于执行状态.在线程的生命周期中,它要经过 新建(New).就绪(Runnable).运行(Running).阻塞(Bloc ...

  10. 对Java线程概念的理解

    1.什么是线程 现代操作系统在运行一个程序时, 会为其创建一个进程. 例如, 启动一个Java程序, 操作系统就会创建一个Java进程. 现代操作系统调度的最小单元是线程, 也叫轻量级进程(Light ...

最新文章

  1. 分数化小数c语言题目,习题 2-5 分数化小数 (decimal)(C语言版)
  2. CSS学习16之层级
  3. 从 k8s 上卸载 KubeSphere
  4. (1)安装----anaconda3下配置pyspark【单机】
  5. Android开发笔记(一百一十五)设计工具
  6. webpack原理和优化
  7. qt-opensource-windows-x86-vs2010-4.8.6 + qt-creator-windows-opensource-2.8.0
  8. 软件测试的测试代码,软件测试(示例代码)
  9. 音乐节拍自动标记插件 BeatEdit 2 for Pr
  10. 从零开始javaweb项目——毕业设计参考指南
  11. android 呼吸灯权限_自定义 呼吸灯 闪烁 效果 自定义View
  12. Ubuntu中挂载使用nas服务器
  13. 志愿人生——带给你每一次温暖
  14. @prometheus监控详解
  15. 嗨购,共享购商业模式,让你的店铺盈利更轻松
  16. 计算机会计试题原型法的优缺点,《计算机会计学》1..doc
  17. avformat_open_input返回-1094995529 “Invalid data found when processing input“
  18. 让智慧物联赋能高效生产, AIRIOT助力数字化油田转型升级
  19. IAR开发STM8S系列启动CMT2300A
  20. mysql级联删除报1451 - Cannot delete or update a parent row: a foreign key constrain

热门文章

  1. c语言奇偶校验完整程序,求助 奇偶校验的C语言编程
  2. java符号用语_java常用语
  3. 四年级计算机病毒与网络安全,《计算机病毒与网络安全》教学案例
  4. 2021-08-25Prompt
  5. Wide Deep 模型详解
  6. 477.汉明距离总和
  7. 过拟合产生的原因有哪些
  8. heeds matlab,Isight FD4-CAE优化软件 与HEEDS对比
  9. android 监听网络的详细例子,android 短信 发送 监听 拦截等自己写的demo
  10. 好用的小工具系列之---lombok--扔掉傻瓜式书写,精简你的代码,节约你的时间