欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  科技

线程安全的无锁循环队列实现

程序员文章站 2022-04-15 19:12:52
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