reactor中的并发

  1. reactor中的并发有两种方式

1.1 flatmap,底层是多线程并发处理。在reactor的演讲中,flatmap对于io类型的并发效果较好.

flamap有两个参数: int concurrency, int prefetch。分别代表并发的线程数和缓存大小

注意凡是参数中有prefetch的,都表示这个operator有对应大小的缓存。

1.2 parallel,这种operator对cpu并发的效果较好

  1. groupyby的优化

因为groupby的缓存可能会用完导致hang住。因此这里有如下的可以考虑的优化方法

  1. 提高groupby的缓存数量

  2. 增加flatmap中的concurrency和prefetch值

复制代码
List<String> data = List.of("alpha", "air", "aim", "beta", "cat", "ball", "apple", "bat", "dog", "ace");
 Flux.fromIterable(data)
         .log()
         .doOnComplete(()->{ System.out.println("end");})
        .groupBy(d -> d.charAt(0),5)
        .flatMap(g -> g.map(String::valueOf)
                .startWith(String.valueOf(g.key()))
                .map(o -> {
                    System.out.println(o);
                    return o;
                }),2,1
        ).subscribe();
  1. share和publish两个方法可以将冷流变成热流

  2. 相对应的cache/buffer/onBackpressureBuffer等操作符因为存在了cache,因此将热流变成了冷流。

可学习文章:

flux中的缓存-CSDN博客

相关推荐
JAVA面经实录91710 小时前
Java+SpringAI企业级实战项目完整官方文档(生产终版)
java·开发语言·spring·ai编程
梵得儿SHI10 小时前
Java IO 流进阶:Buffer 与 Channel 核心概念解析及与传统 IO 的本质区别
java·开发语言·高并发·nio·channel·buffer·提升io效率
2301_7890156211 小时前
C++_string增删查改模拟实现
java·开发语言·c++
没有逆称11 小时前
Java OOM 问题全解析
java·jvm
星河耀银海11 小时前
JAVA 注解(Annotation):从原理到实战应用
java·开发语言·数据库
AI人工智能+电脑小能手11 小时前
【大白话说Java面试题 第68题】【JVM篇】第28题:对于 JDK 自带的监控和性能分析工具用过哪些?一般你怎么用的?
java·开发语言·jvm·面试
青梅橘子皮11 小时前
Linux---冯诺伊曼体系结构,操作系统概况
java·linux·运维
Hexian258011 小时前
SpringAI MCP
java·spring·ai
苦逼的猿宝11 小时前
基于SpringBoot的旅游网站的设计与实现(源码+论文)
java·毕业设计·springboot·计算机毕业设计
_codemonster11 小时前
JSP 、Thymeleaf 、 JavaScript 和Vue
java·javascript·vue.js