第27篇 rabbitmq 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光盘一样的
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值