我们继续为AMQConnection扫盲,另一个成员变量类BlockingCell ,阻塞元件,一次性写入,到处使用。
- 它是一个简单one-shot IPC机制,这个是一个地方缓存区,一旦填满就不能清除,也不能设置新的值
1、成员变量和常量
名称 | 默认值 | 描述 |
---|---|---|
boolean _filled | false | 表示某个值是否填充了标记 |
T _value | 就填充值变量 | |
final long NANOS_IN_MILLI | 1000L*1000L | 1毫秒对应纳秒 |
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光盘一样的