如何在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來斷開連線。
廣告