Java 9 中 Publisher 介面的規則是什麼?
**釋出者**是按訂閱者收到的需求釋出無限數量的順序元素的提供者。**Publisher<T>** 介面負責釋出型別為 **T** 的元素,並提供 **subscribe()** 方法供訂閱者連線到它。
public interface Publisher<T> {
public void subscribe(Subscriber<? super T> s);
}Publisher 介面規則
- **Publisher** 向 **Subscriber** 發出的 **onNext()** 方法總數必須始終小於或等於 Subscriber 的 **Subscription** 請求的元素總數。
- **Publisher** 可以發出比請求的 **onNext()** 方法更少的數量,並透過呼叫 **onComplete()** 或 **onError()** 方法終止 **Subscription**。
- 向 **Subscriber** 發出的 **onSubscribe()**、**onNext()**、**onError()** 和 **onComplete()** 方法必須按順序發出。
- 如果 Publisher 失敗,則必須發出 **onError()** 方法。
- 如果 Publisher 成功終止,則必須發出 **onComplete()** 方法。
- 如果 Publisher 向 **Subscriber** 發出 **onError()** 或 **onComplete()** 方法,則 Subscriber 的 Subscription 必須被取消。
- 一旦發出終止狀態(**onError()**、**onComplete()**),則不允許發生任何進一步的訊號。
- 如果 Subscription 被取消,則其 Subscriber 必須停止接收訊號。
- **Publisher.subscribe()** 方法必須在向該 **Subscriber** 發出任何其他訊號之前,對提供的 Subscriber 呼叫 **onSubscribe()** 方法,並在正常情況下返回,除非提供的 Subscriber 為 null。在這種情況下,它必須向呼叫者丟擲 **NullPointerException**。
- **Publisher.subscribe()** 方法可以根據需要呼叫任意次數,每次使用不同的 Subscriber。
- **Publisher** 可以支援多個 Subscriber,並決定每個 Subscription 可以是 **單播** 還是 **多播**。
廣告
資料結構
網路
關係資料庫管理系統
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP