第20章 Guarded Suspension设计模式(Java高并发编程详解:多线程与系统设计)

1.什么是Guarded Suspension设计模式

Suspension是“挂起”、“暂停”的意思, 而Guarded则是“担保”的意思, 连在一起就是确保挂起。当线程在访问某个对象时,发现条件不满足,就暂时挂起等待条件满足时再次访问, 这一点和Balking设计模式刚好相反(Balking在遇到条件不满足时会放弃) 。

Guarded Suspension设计模式是很多设计模式的基础, 比如生产者消费者模式, WorkerThread设计模式, 等等, 同样在Java并发包中的Blocking Queue中也大量使用到了Guarded Suspension设计模式。

2.Guarded Suspension的示例

import java.util.LinkedList;

public class GuardedSuspensionQueue {
    // 定义存放Integer类型的queue
    private final LinkedList<Integer> queue = new LinkedList<>();

    // 定义queue的最大容量为100
    private final int LIMIT = 100;

    // 往queue中插入数据,如果queue中的元素超过了最大容量,则会陷入阻塞
    public void offer(Integer data) throws InterruptedException {
        synchronized (this) {
            // 判断queue的当前元素是否超过了LIMIT
            while(queue.size()>LIMIT) {
                // 挂起当前线程,使其陷入阻塞
                t
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

扫地僧009

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值