Java 9在 java.util.concurrent.Flow包下引入了Reactive Streams,该包支持可互操作的发布-订阅框架。它处理跨异步边界的异步数据流(将元素传递到另一个线程或线程池),并且不强制接收方缓冲任意数量的数据,因此不会发生缓冲区溢出。
Flow API包含四个相互关联的核心接口:Publisher,Subscriber,Subscription和Processor。
@FunctionalInterfacepublic static interface Publisher<T> { public void subscribe(Subscriber<? super T> subscriber) } public static interface Subscriber<T> { public void onSubscribe(Subscription subscription); public void onNext(T item); public void onError(Throwable throwable); public void onComplete(); } public static interface Subscription { public void request(long n); public void cancel(); } public static interface Processor<T, R> extends Subscriber<T>, Publisher<R> { }
这四个接口:Flow.Publisher,Flow.Processor,Flow.Subscriber和Flow。与响应流规范相关的订阅。
Publisher接口具有subscription()方法,Subscription具有cancel()和request()方法,而Subscriber具有onSubscribe(),onNext(),onError()和onComplete()方法。
Processor接口实现了所有的Flow方法。 发布者和Flow.Subscriber接口。