本文参考自Disruptor 源码解析
查看原文: 原文地址
本文的一些理解基于http://ifeve.com/?x=29&y=10&s=disruptor 一系列文章
RingBuffer
因为一些相关参数都用到了,把这几个步骤一起说明,利于理解
静态模块初始化 + RingBufferFields构造函数
private static final int BUFFER_PAD;//缓冲器填充paddingprivate static final long REF_ARRAY_BASE;//数组对象头信息 + BUFFER_PAD * 引用指针大小 字节private static final int REF_ELEMENT_SHIFT;//引用指定大小 字节private static final Unsafe UNSAFE = Util.getUnsafe();static{final int scale = UNSAFE.arrayIndexScale(Object[].class);if (4 == scale)//开启指针压缩,引用大小为4字节{REF_ELEMENT_SHIFT = 2;}else if (8 == scal