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

相关推荐
牛马baby7 分钟前
Java高频面试之SE-09
java·开发语言·面试
wangjun51597 分钟前
java 转义 反斜杠 Unexpected internal error near index 1
java·正则表达式·反斜杠
橘子海全栈攻城狮1 小时前
【源码+文档+调试讲解】项目申报小程序
java·开发语言·servlet·微信小程序·小程序
-代号95271 小时前
云计算中的可用性SLA
android·java·云计算
文盲青年1 小时前
分布式ID生成-雪花算法实现无状态
java
安girl2 小时前
JDK、JRE、JVM三者的关系、JDK8的新特性、JVM内存结构,堆栈的区别
java·jvm
手撕代码2 小时前
了解什么是JavaEE(什么是JavaEE)
java·前端·java-ee
&白帝&2 小时前
Java数据类型
java·python·算法
工一木子2 小时前
【Leecode】Leecode刷题之路第99天之恢复二叉搜索树
java·算法·leetcode·二叉树·中序遍历
帅到爆的努力小陈2 小时前
进制转换(蓝桥杯)
java·数据结构·算法