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

相关推荐
名誉寒冰几秒前
深入理解fd_set:从基础到实战应用(Linux/C++)
java·linux·c++
CodeAmaz1 分钟前
RocketMQ怎么保证消息不丢失详解
java·rocketmq·java-rocketmq
灵魂猎手8 分钟前
Antrl4 入门 —— 使用Antrl4实现一个表达式计算器
java·后端
zhonghua88101614 分钟前
spring ai alibab agent之ReactAgent深度解读
java·人工智能·spring
水坚石青17 分钟前
Java+Swing+Mysql实现物业管理系统
java·开发语言·数据库·mysql·swing
尼古拉斯·纯情暖男·天真·阿玮18 分钟前
[JavaEE初阶] Thread类的基本用法
java·开发语言
Wpa.wk34 分钟前
自动化测试(java) - PO模式了解
java·开发语言·python·测试工具·自动化·po模式
IT 行者1 小时前
Spring Security 7.0 新特性详解
java·后端·spring
华仔啊1 小时前
Java 的金额计算用 long 还是 BigDecimal?资深程序员这样选
java·后端
Coder_Boy_1 小时前
业务导向型技术日志记录(2)
java·人工智能·驱动开发·微服务