如何在Java 9中执行Flow API?
Java 9中的Flow API对应于Reactive Streams规范,这是一个事实上的标准。它包含一组最小的接口,捕获异步发布和订阅的核心。
以下是Flow API的关键接口
1) Flow.Publisher: 它为订阅者生成要使用的项目,并且它只包含一个方法:subscribe(Subscriber),其用途应该很明显。
语法
void subscribe(Flow.Subscriber<? super T> subscriber)
2) Flow.Subscriber: 它订阅发布者(通常只有一个)以接收项目(通过方法onNext(T))、错误消息(onError(Throwable))或表示不再期望项目的信号(onComplete())。在这些事情发生之前,发布者会调用onSubscription(Subscription)方法。
语法
void onSubscribe(Flow.Subscription subscription) void onNext(T item) void onError(Throwable throwable) void onComplete()
3) Flow.Subscription: 单个发布者和单个订阅者之间的连接。订阅者可以使用它来请求更多项目(request(long))或断开连接(cancel())。
语法
void request(long n) void cancel()
Flow API的执行步骤
- 首先,我们需要创建一个Publisher和一个Subscriber。
- 使用Publisher::subscribe订阅订阅者。
- 发布者创建一个Subscription并使用它调用Subscriber::onSubscription,以便订阅者可以存储订阅。
- 在某些时候,订阅者调用Subscription::request来请求一定数量的项目。
- 发布者开始通过调用Subscriber::onNext将项目传递给订阅者。它永远不会发布超过请求数量的项目。
- 发布者可能会在某些时候遇到问题,并分别调用Subscriber::onComplete或Subscriber::onError。
- 订阅者可能会继续不时请求更多项目,或者通过调用Subscription::cancel来断开连接。
广告