线程安全的无锁循环队列实现
程序员文章站
2022-07-10 18:56:14
1.要解决的问题多个生产者、多个消费者线程在内存中完成合作2.应用场景需要用到并发内存消息队列的场景,如撮合交易3.需要的基础知识CAS(CompareAndSwap)位运算4.解决思路用数组不用链表,更快保证生产、消费的持续,需是循环队列不用Syncronized、不用显示锁,更快使用AtomicReferenceArray中的CAS API,保证线程安全且更快数组长度设置为2^n,位运算计算下标,更快5.关键源码数据成员private AtomicRefer...
1.要解决的问题
多个生产者、多个消费者线程在内存中完成合作
2.应用场景
- 需要用到并发内存消息队列的场景,如撮合交易
3.需要的基础知识
- CAS(CompareAndSwap)
- 位运算
4.解决思路
- 用数组不用链表,更快
- 保证生产、消费的持续,需是循环队列
- 不用Syncronized、不用显示锁,更快
- 使用AtomicReferenceArray中的CAS API,保证线程安全且更快
- 数组长度设置为2^n,位运算计算下标,更快
5.关键源码
- 数据成员
private AtomicReferenceArray<T> circleAtomicArray;
//最大2^32-1
static final int MAXIMUM_CAPACITY
本文地址:https://blog.csdn.net/Martian158/article/details/107596174