数据结构与算法-Disruptor背后的秘密

Disruptor是java内存级的消息队列,堪称java中性能最高的队列,在java的并发篇中提到过,本文主要讲解在算法方面是如何做到的。

循环队列

JAVA原生多采用ArrayBlockingQueue,注:LinkedBlockingQueue无界队列当消费者消费能力不足会导致OOM。
而Disruptor采用的这种方式本质上是循环队列,在插入、删除等不会出现数据的搬移操作。并且所有数据都已经初始化好减少gc的成本

无锁操作

生产时候会去检查是否有空位,如果没有会用cas一直询问,消费时候会去判断队列是否为空,为空就一直判断。

解决伪缓存

不在这里讨论啦:P,用的是缓存填充法。