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

wait/notify/join/设计模式

JUC

wait

  • obj.wait() 让进入 object 监视器的线程到 waitSet 等待
  • wait()方法会释放对象的锁,进入 WaitSet 等待区,从而让其他线程就机会获取对象的锁。无限制等待,直到 notify 为止
  • wait(long n)有时限的等待,到 n 毫秒后结束等待,或是被 notify
  • sleep 是 Thread 方法,而 wait 是 Object 的方法 2) sleep 不需要强制和 synchronized 配合使用,但 wait 需要 和 synchronized 一起用 3) sleep 在睡眠的同时,不会释放对象锁的,但 wait 在等待的时候会释放对象锁 4) 它们 状态 TIMED_WAITING

notify

obj.notify() 在 object 上正在 waitSet 等待的线程中挑一个唤醒 obj.notifyAll() 让 object 上正在 waitSet 等待的线程全部唤醒

join

设计模式 - 保护暂停模式

即 Guarded Suspension,用在一个线程等待另一个线程的执行结果 要点 有一个结果需要从一个线程传递到另一个线程,让他们关联同一个 GuardedObject 如果有结果不断从一个线程到另一个线程那么可以使用消息队列(见生产者/消费者)JDK 中,join 的实现、Future 的实现,采用的就是此模式 因为要等待另一方的结果,因此归类到同步模式

设计模式 - 生产者消费者模式

要点 与前面的保护性暂停中的 GuardObject 不同,不需要产生结果和消费结果的线程一一对应 消费队列可以用来平衡生产和消费的线程资源 生产者仅负责产生结果数据,不关心数据该如何处理,而消费者专心处理结果数据 消息队列是有容量限制的,满时不会再加入数据,空时不会再消耗数据 JDK 中各种阻塞队列,采用的就是这种模式

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

相关文章:

  • Windows Docker笔记-Docker拉取镜像
  • 七大排序思想
  • intra-mart实现简易登录页面笔记
  • SpringBoot整合RocketMQ
  • 深入理解 YUV Planar 和色度二次采样 —— 视频处理的核心技术
  • 项目顺利交付,几个关键阶段
  • 第七天 开始学习ArkTS基础,理解声明式UI编程思想
  • windows C++ Fiber (协程)
  • 游戏引擎学习第89天
  • 2025新鲜出炉--前端面试题(一)
  • 教程 | i.MX RT1180 ECAT_digital_io DEMO 搭建(一)
  • Pyecharts系列课程04——折线图/面积图(Line)
  • 变压器-000000
  • 凝思60重置密码
  • linux——网络计算机{序列化及反序列化(JSON)(ifdef的用法)}
  • 【教程】docker升级镜像
  • 迅为RK3568开发板篇OpenHarmony实操HDF驱动控制LED-编写应用APP
  • python代码
  • React 打印插件 -- react-to-print
  • 探索C语言简易计算器程序的实现与优化
  • 深入了解 MySQL:从基础到高级特性
  • OSPF基础(1):工作过程、状态机、更新
  • 工业相机如何获得更好的图像色彩
  • 使用requestAnimationFrame减少浏览器重绘
  • Mac 终端命令大全
  • 如何使用deepseek开发一个翻译API
  • vue如何解决跨域
  • 红包雨项目前端部分
  • 新版AndroidStudio 修改 jdk版本
  • 【golang学习之旅】使用VScode安装配置Go开发环境