当前位置: 移动技术网 > 科技>办公>内存 > 线程安全的无锁循环队列实现

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

2020年07月27日  | 移动技术网科技  | 我要评论
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

如您对本文有疑问或者有任何想说的,请 点击进行留言回复,万千网友为您解惑!

相关文章:

验证码:
移动技术网