JDK8高性能队列“Disruptor“

Hello,你好呀,我是大白(●—●)

高性能队列 DISruptor

在这里插入图片描述

传统队列问题:

1、通过加锁保证线程安全,有性能问题
2、ArrayBlockingQueue 存在伪共享问题

Disruptor 高性能的原理

1、引入了一个环形数组结构,数组是不会回收的,意味着不会有频繁的GC
2、元素在进行操作时使用CAS无锁的方式,避免加锁,同时保证线程安全
对于传统队列伪共享问题,缓存行对于数组也是成立的。当CPU在读取环形数组时,会一次性将
多个元素读到一个缓存行去,加快访问速度。
在一个数组里面高速定位:数组的大小定义为2的n次方,数组中有一个指针(Sequence) 是一个volatile变量
在实现的时候避免伪共享问题,在Sequence前后都填充了无意义的数据

大白(●—●)陪你一起进步!
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_42292697/article/details/112675058