1.前言前两天做log4j2的时候不是遇到了Disruptor吗?不知道能不能从这个炸毁的并发框架中学到一些性能优化的思路。稍微研究一下源码,真的很有收获。对Disruptor感兴趣的朋友可以看看哈希大哥的博客。Disruptor上有系列文章,比较详细https://blog.csdn.net/zhxdick...2.RingBuffer大致看了下,好像所有的点都和RingBuffer有关,所以写标题作为环形缓冲区。Disruptor在初始化时会创建一个指定大小的RingBuffer。创建后大小不变,不会自动扩容,避免了频繁扩容带来的性能损失;存储数据的核心是条目数组变量。RingBuffer初始化的时候会预先分配数据【是不是有点像pooling】来填满数组;[数据内容为自定义事件对象]。这个逻辑可以在RingBuffer的父类RingBufferFields的实现中看到:this.bufferSize=sequencer.getBufferSize();if(bufferSize<1){thrownewIllegalArgumentException("bufferSize不能小于1");}if(Integer.bitCount(bufferSize)!=1){thrownewIllegalArgumentException("bufferSize必须是2的幂");}this.indexMask=bufferSize-1;this.entries=newObject[sequencer.getBufferSize()+2*BUFFER_PAD];//预分配对象fill(eventFactory);}privatevoidfill(EventFactory
