Reactor3 SpscLinkedArrayQueue源码分析
2021/12/12 22:20:53
本文主要是介绍Reactor3 SpscLinkedArrayQueue源码分析,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
前言
Reactor3在BUFFER背压策略下,当Publisher发布元素后会先到一个缓存队列中,然后由生产者推送或者消费者拉取。SpscLinkedArrayQueue就是这其中的队列。在JDK9中引入了响应式的接口Flow,在JDK中有一个Flow.Publisher的实现SubmissionPublisher。SubmissionPublisher的背压就很简单,使用的队列是一个Object数组。
那为什么Reactor3不使用简单的Object数组呢,要去另辟蹊径实现另外的一个队列?
数组在数据到达一定规模后需要扩容和缩容,就这一个问题就已经很致命了。在高并发情况下消息很容易堆积,数组就不得不频繁的进行扩容,数组扩容也就意味着会有元素进行复制,如果元素较多很容易成为性能瓶颈。
既然受到扩容和缩容的困扰为何不使用链表,这样不就是无限大吗?并且不用处理扩容和缩容的问题,链表的头尾插入和删除的时间复杂度都是O(1)性能也不拉胯。
确实可以,但是链表的性能在实际机器上跑起来确实不太行,最近某些公众号还有推LinkedList的作者都不使用它
这篇关于Reactor3 SpscLinkedArrayQueue源码分析的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-16Vue3资料:新手入门必读教程
- 2024-11-16Vue3资料:新手入门全面指南
- 2024-11-16Vue资料:新手入门完全指南
- 2024-11-16Vue项目实战:新手入门指南
- 2024-11-16React Hooks之useEffect案例详解
- 2024-11-16useRef案例详解:React中的useRef使用教程
- 2024-11-16React Hooks之useState案例详解
- 2024-11-16Vue入门指南:从零开始搭建第一个Vue项目
- 2024-11-16Vue3学习:新手入门教程与实践指南
- 2024-11-16Vue3学习:从入门到初级实战教程