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();
}
}
}
相关推荐
Demon1_Coder2 分钟前
Day3-微服务-Sentinel-具体使用
java·微服务·sentinel
小科先生2 分钟前
配置java环境变量
java·开发语言
大山是只猫3 分钟前
struts 从struts 2版本 升级6.8.0 版本
java·struts2·struts6
牧瀬クリスだ10 分钟前
深入解析wait与notify及多线程实战案例
java
AI人工智能+电脑小能手12 分钟前
【大白话说Java面试题 第97题】【Mysql篇】第27题:说说分库与分表的设计?
java·开发语言·数据库·分布式·mysql·算法
2301_7926748619 分钟前
java学习(day37)
java
洒脱的六边形战士加辣21 分钟前
Java排序方法全解析
java·数据结构·算法
ofoxcoding22 分钟前
MiniMax M3 实测手记:踩完坑之后,我总结了报错处理和省 token 的几个办法
java·前端·人工智能·ai
Python+9923 分钟前
线程创建、生命周期、线程池
java
ch.ju29 分钟前
Java Programming Chapter 4——The set-get method.
java·开发语言