第27篇 rabbitmq BlockingCell源码分析

这篇博客介绍了AMQConnection中BlockingCell类的详细功能,它是一个简单的one-shot IPC机制,用于一次性写入并多次读取。成员变量包括填充标志和值,以及超时相关的常量。提供了get()、get(long timeout)等同步方法来获取值,set()方法用于设置值,且只能设置一次。总结来说,BlockingCell类似于只读存储,一旦设置不可更改,适合一次性写入、多次读取的场景。

我们继续为AMQConnection扫盲,另一个成员变量类BlockingCell ,阻塞元件,一次性写入,到处使用。

  • 它是一个简单one-shot IPC机制,这个是一个地方缓存区,一旦填满就不能清除,也不能设置新的值

1、成员变量和常量

名称默认值描述
boolean _filledfalse表示某个值是否填充了标记
T _value就填充值变量
final long NANOS_IN_MILLI1000L*1000L1毫秒对应纳秒
final long INFINITY-1无穷

2、方法

方法名描述图示
public BlockingCell(){}构造方法
synchronized T get()获取值,如何填充值就一直等待
synchronized T get(long timeout)超时等待获取值,-1表示永久等待,如果超时还未填充值就抛出超时异常(时间为毫秒)
synchronized T uninterruptibleGet()相当于get()方法,它增强了它忽略线程打断操作
synchronized T uniterruptibleGet(int timeout)相当于get(long timeout)方法,它增强了它忽略在超时间内线程打断操作
synchronized void set(T newValue)只能被设置一次,设置完之后通过getXXX获取值
synchronized boolean setIfUnset(T newValue)加了预先判断,避免直接抛出异常

3、总结

  • 一次设置,多次取用,有点类似ROM光盘一样的
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值