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

相关推荐
即将进化成人机3 分钟前
Spring Boot入门
java·spring boot·后端
苏打水com5 分钟前
HTML/CSS 核心考点详解(字节跳动 ToB 中台场景)
java·前端·javascript
-大头.6 分钟前
Spring批处理与任务管理全解析
java·linux·spring
科普瑞传感仪器14 分钟前
基于六维力传感器的机器人柔性装配,如何提升发动机零部件装配质量?
java·前端·人工智能·机器人·无人机
她说..14 分钟前
Java AOP完全指南:从原理到实战(全套知识点+场景总结)
java·开发语言·spring·java-ee·springboot
-大头.14 分钟前
Spring进阶:构建模块化RESTful系统全攻略
java·spring·restful
Java林间16 分钟前
飞书机器人消息推送策略模式Java实践
java
Wukong.Sun29 分钟前
【双人对战五子棋游戏】的自动化测试框架设计
java·selenium·测试工具
weixin_4365250733 分钟前
jar包启动使用logs替换nohup日志文件
java·linux·数据库
D***776535 分钟前
【Redis】在Java中以及Spring环境下操作Redis
java·redis·spring