一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第3天,点击查看活动详情。
上一篇我们讲了响应式编程,这一篇我们来讲解一下编程用到的接口,并把这些接口通过简单的方式进行实践一下,那废话不多说,我们就开始吧。
导入依赖
想使用这个响应式编程,我们需要导入依赖,如下:
<dependency>
<groupId>io.projectreactor</groupId>
<artifactId>reactor-core</artifactId>
</dependency>
介绍类或接口
元素相关
接着,我们介绍一些编程需要用到的类,生成元素的类flux
我们需要用这个接口,帮助我们生成元素:
指定起始和数量,之后它会进行一个拼接,然后保存。
和我们的流一样,支持一个元素的映射
线程调度器
线程调度immediate:当前线程执行
线程调度newSingle:新线程执行
线程调度elastic:缓存线程池里的线程,60秒生命周期
线程调度Parallel:固定的线程池运行,线程数和cpu核数大小相同
背压
指定请求数
搞代码
生产数据:
Flux.range(1, 6)
指定请求:
.doOnRequest(n -> log.info("Request {} number", n))
指定调度器:
.publishOn(Schedulers.elastic())
看看映射的是哪个线程
.map(i -> {
log.info("Publish {}, {}", Thread.currentThread(), i);
return i;
})
发布完成,进行一个打印
.doOnComplete(() -> log.info("Publisher COMPLETE 2"))
订阅代码:
.subscribe(i -> log.info("Subscribe {}: {}", Thread.currentThread(), i),
e -> log.error("error {}", e.toString()),
() -> log.info("Subscriber COMPLETE")//,
);
代码运行结果
生成6个序列,指定请求数是256,然后发布一个订阅一个,然后就实现了简单的响应式编程。