当前位置: 首页 > news >正文

线程七大状态

 线程生命周期(七大状态)

  1. 新建状态(New):当Java线程被创建时,它处于新建状态。此时,线程对象已被创建,但尚未启动。在这个状态下,线程并没有开始执行任何代码,它只是一个普通的Java对象。

  2. 就绪状态(Ready):当Java线程被调度执行时,它会进入就绪状态。这意味着线程已经准备好开始执行,并等待操作系统分配CPU资源。在这个状态下,线程已经获得了所有需要执行的资源,但是还没有开始执行。

  3. 运行状态(Running):当Java线程获得了CPU资源并开始执行时,它会进入运行状态。在这个状态下,线程正在执行它的run()方法中的代码。只有在这个状态下,线程才真正开始执行代码。

  4. 阻塞状态(Blocked):当Java线程需要等待某些条件发生时,它会进入阻塞状态。例如,如果线程试图获取一个已经被其他线程锁住的锁,那么它将被阻塞直到锁被释放。在这个状态下,线程暂停了执行,并等待某些事件的发生。

  5. 等待状态(Waiting):当Java线程需要等待其他线程执行某些操作时,它会进入等待状态。在这个状态下,线程等待某些条件的发生,例如等待其他线程调用notify()或notifyAll()方法,或等待一定时间。线程可以通过调用Object.wait()或Thread.join()方法来进入等待状态。

  6. 超时等待状态(Timed Waiting):当Java线程需要等待一段时间后再返回时,它会进入超时等待状态。在这个状态下,线程等待一定的时间,或等待其他线程调用notify()或notifyAll()方法,或等待一定条件的发生。线程可以通过调用Thread.sleep()或Object.wait(long)方法来进入超时等待状态。

  7. 终止状态(Terminated):当Java线程执行完run()方法后,它会进入终止状态。在这个状态下,线程不再执行任何代码,并释放所有已经持有的资源。线程在这个状态下已经完成了它的使命,并且不能再次启动。

注意:Java线程中的Ready状态也被称为可运行状态(Runnable),它表示线程已经准备好开始执行,并等待操作系统分配CPU资源。在这个状态下,线程已经获得了所有需要执行的资源,但是还没有开始执行。

当线程处于Ready状态时,它已经被创建并分配到了系统资源,但是操作系统还没有开始执行线程。操作系统会根据调度算法来决定哪个线程会被分配到CPU资源,并进入Running状态。其他处于Ready状态的线程则继续等待分配CPU资源。

线程可以通过调用Thread.start()方法来进入Ready状态,这个方法会启动线程并将其加入到可执行线程池中。一旦线程进入Ready状态,它就已经准备好开始执行,并等待操作系统的调度。线程在Ready状态下等待的时间取决于操作系统的调度算法,一旦被分配到CPU资源,线程就会进入Running状态,并开始执行线程的run()方法。

Ready状态和Running状态可以被统称为Runnable状态。

线程状态转换图

 

http://www.lryc.cn/news/61899.html

相关文章:

  • Linux第一章
  • Microsoft Defender for Identity部署方案
  • 超越YOLOv8,飞桨推出精度最高的实时检测器RT-DETR!
  • 基于Docker安装Redis【保姆级教程、内含图解】
  • 电子表格软件与一站式BI的区别
  • SpringCache
  • Android Framework—Service
  • leetcode (重排数组使得)连续子数组的权值和最小
  • JSP计算机等级考试查询系统(源代码+论文+答辩PPT)
  • python 基础系列篇:七、以函数方式编写一个数字华容道
  • 2023年前端面试题
  • 快速入门量化交易
  • Mongodb oplog
  • python基础篇: python字符串方法都有哪些?你知道多少?
  • chmod 命令 (chmod 0660)
  • Qt应用开发常用功能
  • 麻了,部门新来的00后给我卷崩溃了...
  • 代码随想录算法训练营第56天|583. 两个字符串的删除操作,72. 编辑距离
  • 【嵌入式笔/面试】嵌入式软件基础题和真题总结——操作系统
  • 2023浙江省赛“信息安全管理与评估“--Web渗透测试(高职组)
  • 垃圾收集器面试总结(二)
  • 语音交友app开发中的用户积分系统
  • Nature:惊人的突破!科学家们成功破译人类嗅觉感应机制的奥秘!
  • WPF教程(九)--数据绑定(2)--绑定模式
  • 湿法冶金以及铼提取工艺,湿法冶金工艺特点及工艺流程
  • kafka集群搭建
  • 【UE】将存档的值显示在控件蓝图上
  • 考研数据结构代码篇
  • css-设置单行文本溢出省略号,使用overflow:hidden属性之后的出现的问题几解决办法。
  • js的方法