浅谈JDK 9—Flow

一、响应式编程

JDK 9 Flow 是JDK对Reactive Stream (响应式流/反应流) 的实现,Reactive Stream是一套基于发布/订阅模式的数据处理规范。响应式流从2013年开始,作为提供非阻塞背压的异步流处理标准的倡议。 它旨在解决处理元素流的问题——如何将元素流从发布者传递到订阅者,而不需要发布者阻塞,或订阅者需要有无限制的缓冲区或丢弃。更确切地说,Reactive流目的是“找到最小的一组接口,方法和协议,用来描述必要的操作和实体以实现这样的目标:以非阻塞背压方式实现数据的异步流”。
反应式流 (Reactive Stream) 规范诞生,定义了如下四个接口:

Subscription 接口定义了连接发布者和订阅者的方法
Publisher 接口定义了发布者的方法
Subscriber 接口定义了订阅者的方法
Processor<T,R> 接口定义了处理器

Reactive Stream 规范诞生后,RxJava 从 RxJava 2 开始实现 Reactive Stream 规范 , 同时 Spring提供的Reactor 框架(WebFlux的基础) 等也相继实现了 Reactive Stream 规范。
下图展示了订阅者和发布者之间的交互:
在这里插入图片描述
下面解释下前面提到了背压:如果生产者发出的信息比消费者能够处理消息最大量还要多,消费者可能会被迫一直在抓消息,耗费越来越多的资源,埋下潜在的崩溃风险。为了防止这一点,需要有一种机制使消费者可以通知生产者,降低消息的生成速度。生产者可以采用多种策略来实现这一要求,这种机制称为背压。

二、JDK 9 的Flow和JDK 8中的Stream的关系

从名字来说,二者都有流的含义,但其实二者并不是同一个概念:

Flow API会在网络通信方面(请求,减速,丢弃,阻塞等);
Streams API非常适合处理数据流(map,reduce和所有变体)。

三、JDK 9 的Flow和Spring Reactor的关系

二者都是Reactive Streams 规范的实现:

Java 9 Flow 是JDK的实现;
Reactor 框架(Web Flux的基础)是Spring的实现。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值