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();
}
}
}
相关推荐
春生野草4 分钟前
启动Nginx
java·微服务·架构
悟空CRM服务8 分钟前
开源的力量:如何用开源技术构建高效IT架构?
java·人工智能·架构·开源·开源软件
小二·13 分钟前
设计模式面试题(14道含答案)
设计模式
神仙别闹27 分钟前
基于SpringMVC+Spring+MyBatis开发的个人博客网站
java·spring·mybatis
华仔啊1 小时前
MyBatis-Plus 不只是简化CRUD!资深架构师总结的15个高阶用法
java·后端·mybatis
Han.miracle1 小时前
Java EE --JUC
java·线程池·原子类·callable·semaphore·reentrantlcok
那我掉的头发算什么1 小时前
【javaEE】多线程——线程安全初阶☆☆☆
java·jvm·安全·java-ee·intellij-idea
yzp-2 小时前
Zookeeper 笔记
java·分布式·zookeeper
蜡笔大新7982 小时前
IDEA中的异常
java·ide·intellij-idea
后端小张2 小时前
【JAVA 进阶】Spring Boot 注解体系与工程实践
java·开发语言·spring boot·后端·spring·spring cloud·java-ee