Guarded Suspension(担保挂起)设计模式

当线程访问某个对象时,发现条件不满足,暂时挂起等待条件满足时再次访问。Guarded Suspension模式是一个非常基础的模式,主要关注(临界值)不满足时将操作的线程正确挂起,以防止出现数据不一致或者操作超过临界值的控制范围。它是很多线程设计模式的基础。

示例代码:

java 复制代码
import java.util.LinkedList;

public class GuardedSuspensionQueue {
private final LinkedList<Integer> queue=new LinkedList<>();
private final int LIMIT=100;

public void offer(Integer data) throws InterruptedException{
synchronized(this) {
while(queue.size()>=LIMIT) {
this.wait();
}
queue.addLast(data);
this.notifyAll();
}
}

public Integer take() throws InterruptedException{
synchronized(this) {
while(queue.isEmpty()) {
this.wait();
}
this.notifyAll();
return queue.removeFirst();
}
}
}
相关推荐
李坤林12 小时前
Android Binder 详解(4) Binder 线程池
android·java·binder
代码方舟12 小时前
Java后端实战:构建基于天远手机号码归属地核验的金融级风控模块
java·大数据·开发语言·金融
困知勉行198512 小时前
springboot整合redis
java·spring boot·redis
颜淡慕潇12 小时前
深度解析官方 Spring Boot 稳定版本及 JDK 配套策略
java·后端·架构
中年程序员一枚12 小时前
Springboot报错Template not found For name “java/lang/Object_toString.sql
java·spring boot·python
知识分享小能手12 小时前
Ubuntu入门学习教程,从入门到精通,Ubuntu 22.04中的Java与Android开发环境 (20)
java·学习·ubuntu
南屿欣风12 小时前
FeignClient 踩坑:@FeignClient 同时配 value 和 url 的 “无效服务名” 问题
java
豆沙沙包?13 小时前
2026年--Lc329-735. 小行星碰撞(栈)--java版
java·开发语言
爆更小哇13 小时前
Selenium自动化测试函数全解析(二)
java·selenium·测试工具·自动化
C雨后彩虹13 小时前
计算误码率
java·数据结构·算法·华为·面试