http://mechanitis.blogspot.com/2011/06/dissecting-disruptor-whats-so-special.html
https://zhuanlan.zhihu.com/p/45100690
https://zhuanlan.zhihu.com/p/45575008
https://zhuanlan.zhihu.com/p/45100690
为了提高系统的吞吐量,通常会采用队列来实现批量处理,发布订阅模式,异步等场景。在JDK的内置队列中,一般实际中会使用 ArrayBlockingQueue,一方面是有界的,另一方面是通过加锁实现的线程安全,比如在使用线程池的时候最佳实践就是指定了一个 ArrayBlockingQueue 作为任务队列。
LMAX公司开发的 Disruptor 通过无锁(CAS),避免缓存行伪共享,环形数组(RingBuffer)实现了更高的性能,Storm,Log4j2中都使用了 Disruptor。
github搜索 mampa。基于distuptor的有限状态机实现。
https://zhuanlan.zhihu.com/p/45575008