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

线程状态,BLOCKED和WAITING 有什么区别

BLOCKED 和 WAITING 都是属于线程的阻塞等待状态。

BLOCKED

BLOCKED 状态是指线程在等待监视器锁的时候的阻塞状态。 也就是在多个线程去竞争 Synchronized 同步锁的时候,没有竞争到锁资源的 线程,会被阻塞等待,这个时候线程状态就是 BLOCKED。 在线程的整个生命周期里面,只有 Synchronized 同步锁等待才会存在这个状态。 

WAITING 

WAITING 状态,表示线程的等待状态,在这种状态下,线程需要等待某个线程的特定操作才会被唤醒。我们可以使用 Object.wait()、Object.join()、LockSupport.park()这些方法。 使得线程进入到 WAITING 状态,在这个状态下,必须要等待特定的方法来唤醒, 比如 Object.notify 方法可以唤醒 Object.wait()方法阻塞的线程, LockSupport.unpark()可以唤醒 LockSupport.park()方法阻塞的线程。

总结

在我看来,BLOCKED 和 WAITING 两个状态最大的区别有两个:
  • BLOCKED 是锁竞争失败后被被动触发的状态,WAITING 是人为的主动触发的状
  • BLCKED 的唤醒时自动触发的,而 WAITING 状态是必须要通过特定的方法来主动唤醒

http://www.kler.cn/news/107099.html

相关文章:

  • Ubuntu部署docker及docker常用操作
  • 计算机网络重点概念整理-第五章 传输层【期末复习|考研复习】
  • Spring Boot 依赖注入实现原理
  • NLP之RNN的原理讲解(python示例)
  • 【C++】:拷贝构造函数与赋值运算符重载的实例应用之日期类的实现
  • Ubuntu22.0.4安装svn服务
  • HarmonyOS原生分析能力,即开即用助力精细化运营
  • Vue将Element Plus 进行自定义封装
  • 【Linux】安装VMWare虚拟机(安装配置)和配置Windows Server 2012 R2(安装配置连接vm虚拟机)以及环境配置
  • cesium开发引入方式
  • 一体化运维监控:数据中心运维可视化的指挥中枢
  • 轻量封装WebGPU渲染系统示例<3>-纹理立方体(源码)
  • JVM进阶(3)
  • macOS Sonoma 14.1正式版(23B74)发布(可下载黑白苹果镜像)
  • LabVIEW开发基于图像处理的车牌检测系统
  • C/C++面试常见问题——const关键字的作用和用法
  • DAC芯片AD5689控制代码SPI接口FPGA代码,视频
  • Qt文件 I/O 操作
  • 深度学习标注工具(包括自动标注)总结——持续更新
  • 不同网段的IP怎么互通
  • c语言基础:L1-060 心理阴影面积
  • 一文详解汽车电CAN总线
  • SpringMVC(下)
  • mysql bin_log日志恢复数据
  • Android framework服务命令行工具框架 - Android13
  • 高速下载b站视频的解决方案
  • UI自动化测试是什么?什么项目适合做UI自动化测试
  • 24年FRM备考知识点以及一级公式表
  • 【机器学习】KNN算法-模型选择与调优
  • 力扣每日一题73:矩阵置零