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博客

相关推荐
HoneyMoose7 分钟前
Spring Boot 2.4 部署你的第一个 Spring Boot 应用需要的环境
java
皮皮林55117 分钟前
为什么 Spring 和 IDEA 都不推荐使用 @Autowired 注解??
java
衍生星球26 分钟前
【JSP程序设计】Servlet对象 — page对象
java·开发语言·servlet·jsp·jsp程序设计
vx-Biye_Design29 分钟前
servlet家政公司管理系统-计算机毕业设计源码01438
java·vue.js·spring·servlet·tomcat·maven·mybatis
云和数据.ChenGuang30 分钟前
jenkins安装需要多少版本的jdk
java·servlet·jenkins
linux运维客栈30 分钟前
Jenkins 最稳部署指南(含版本选择、Compose 部署、插件推荐)
java·servlet·jenkins
扶苏瑾31 分钟前
线程安全问题的产生原因与解决方案
java·开发语言·jvm
珹洺32 分钟前
Java-servlet(五)手把手教你利用Servlet配置HTML请求与相应
java·运维·服务器·前端·servlet·html·maven
带刺的坐椅37 分钟前
Java 版 Claude Code CLI 来了!(国产开源)Solon Code CLI 发布
java·ai·agent·solon·claudecode·soloncode
FYKJ_201040 分钟前
springboot大学校园论坛管理系统--附源码42669
java·javascript·spring boot·python·spark·django·php