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

相关推荐
不吃香菜学java14 分钟前
苍穹外卖-新增菜品需求分析
java·spring boot·spring·tomcat·maven·ssm
xiaohe0725 分钟前
自己编译RustDesk,并将自建ID服务器和key信息写入客户端
java
smile_life_27 分钟前
使用idea查看maven依赖
java·maven·intellij-idea
Predestination王瀞潞29 分钟前
1. Java SE到底是什么:不仅仅是面向对象
java·开发语言
苏渡苇33 分钟前
虚拟线程(Virtual Threads)初体验:10万并发如喝水(JDK 21)
java·高并发·虚拟线程·jdk21·virtual threads
yuanlaile1 小时前
2026后端趋势:Java 老了?Go 才是未来?
java·后端·golang·go与java·后端学什么
春日见1 小时前
Matlab快速入门 基础语法教学
java·开发语言·驱动开发·matlab·docker·计算机外设
浩瀚之水_csdn1 小时前
++ Lambda 表达式详解
java·jvm·windows
₍˄·͈༝·͈˄*₎◞ ̑̑码2 小时前
多线程——线程安全问题
java·线程安全
皙然2 小时前
深入浅出 JVM:从内存结构到性能调优的全维度解析
java·jvm