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

线程的状态有哪些?它是如何工作的?

1、线程的状态:

  • NEW,新建状态,线程被创建出来,但尚未启动时的线程状态;
  • RUNNABLE,就绪状态,表示可以运行的线程状态,它可能正在运行,或者是在排队等待操作系统给它分配 CPU 资源;
  • BLOCKED,阻塞等待锁的线程状态,表示处于阻塞状态的线程正在等待监视器锁,比如等待执行 synchronized 代码块或者使用 synchronized 标记的方法;
  • WAITING,等待状态,一个处于等待状态的线程正在等待另一个线程执行某个特定的动作,比如,一个线程调用了 Object.wait() 方法,那它就在等待另一个线程调用 Object.notify() 或 Object.notifyAll() 方法;
  • TIMED_WAITING,计时等待状态,和等待状态(WAITING)类似,它只是多了超时时间,比如调用了有超时时间设置的方法 Object.wait(long timeout) 和 Thread.join(long timeout) 等这些方法时,它才会进入此状态;
  • TERMINATED,终止状态,表示线程已经执行完成。

2、线程的工作模式

首先先要创建线程并指定线程需要执行的业务方法,然后再调用线程的 start() 方法,此时线程就从 NEW(新建)状态变成了 RUNNABLE(就绪)状态,此时线程会判断要执行的方法中有没有 synchronized 同步代码块,如果有并且其他线程也在使用此锁,那么线程就会变为BLOCKED(阻塞等待&#x


http://www.mrgr.cn/news/75116.html

相关文章:

  • 【TensorRT】使用C++将yolov8 onnx转化为tensorrt格式
  • Python →爬虫实践
  • 网页web无插件播放器EasyPlayer.js点播播放器遇到视频地址播放不了的现象及措施
  • 【HBase原理及应用实训课程】第五章 HBase与MapReduce的集成
  • 前端基础的讲解-JS(10)
  • Android Framework AMS(16)进程管理
  • SMA-BP基于黏菌算法优化BP神经网络时间序列预测
  • 解析安卓镜像包和提取DTB文件的操作日志
  • 探索AutoDL与CodeWithGPU:深度学习之旅的新起点
  • 时序论文20|ICLR20 可解释时间序列预测N-BEATS
  • 【算法一周目】双指针(2)
  • JavaScript总结
  • Path.Combine容易被忽略的细节
  • DAPP迎启动契机,Scroll 生态全面启动为 Pencils Protocol 赋能
  • C++函数的返回值在内存中的传递过程
  • 第4章-计划 4.4 范围管理
  • Python基础学习-07不可重复的set集合
  • 常用的生物医药专利查询数据库及网站(很全!)
  • Jetpack 之 Ink API初探
  • qt QQuickView详解
  • 《DPT: Deformable Patch-based Transformer for Visual Recognition》论文翻译
  • Go常见框架对比
  • AI驱动的电商创新:提升销售效率与用户体验
  • session 的工作原理
  • SpringBoot(十)SpringBoot使用QQ邮箱stmp发送邮件
  • 【计算机网络】UDP网络程序