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-12-27Vue2面试真题详解与实战教程
- 2024-12-27Vue3面试真题详解与实战攻略
- 2024-12-27JS大厂面试真题解析与实战指南
- 2024-12-27JS 大厂面试真题详解与实战指南
- 2024-12-27React 大厂面试真题详解及应对策略
- 2024-12-27Vue2 大厂面试真题详解及实战演练
- 2024-12-27Vue3 大厂面试真题详解及实战指南
- 2024-12-27Vue3大厂面试真题详解与实战攻略
- 2024-12-26React入门教程:从零开始搭建你的第一个React应用
- 2024-12-25Vue2入门教程:轻松掌握前端开发基础