一個訂閱可以由一個發布者和一個訂閱者共享,用於調解資料交換。這就是為什麼subscribe()方法不傳回已建立的訂閱,而是傳回void。訂閱僅透過onSubscribe()方法回呼傳遞給訂閱者。訂閱介麵包含兩個方法:request()和cancel()。
語法
<strong>public interface Subscription {
public void request(long n);
public void cancel();
}</strong>
訂閱介面規則:
-
#Subscription.request() 和 Subscription. cancel() 方法只能在其訂閱者上下文內部呼叫。
- 訂閱必須允許訂閱者從內部同步呼叫 Subscription.request() 方法onNext() 或 onSubscribe() 方法。
-
Subscription.request() 方法必須設定可能的上限發布者和訂閱者之間的同步遞歸。
-
Subscription.request()方法應透過傳回來尊重其呼叫者的回應性
-
Subscription.cancel()方法必須透過及時返回來尊重呼叫者的回應能力,並且必須是線程安全的 strong>。
- 雖然訂閱未取消,但Subscription.request(long n) 方法必須註冊要為對應訂閱者產生的給定數量的附加元素。
- 雖然訂閱未取消,但Subscription.request(long n) 方法必須呼叫onError() 方法並拋出IllegalArgumentException if參數為
- 當訂閱未取消時,Subscription.request(long n)方法可能會同步呼叫onNext()方法在此訂閱者或其他訂閱者上。
- 當訂閱未取消時,Subscription.request(long n) 方法可能會同步呼叫onComplete() 或onError()方法。
- 雖然訂閱未取消,但Subscription.cancel()方法必須請求發布者停止向其發出訊號訂戶。該操作不能立即影響訂閱。
- 雖然訂閱未取消,但Subscription.cancel() 方法必須請求發布者刪除對相應訂閱的任何引用訂閱者。
- 呼叫Subscription.cancel()和Subscription.request()方法必須正常回傳。
-
>訂閱必須支援無限數量的請求調用,並支援最多2^63-1的需求。如果需求等於或大於2^63-1,發布者可能會認為有效無界。
#
以上是Java 9中的Subscription介面有哪些規則?的詳細內容。更多資訊請關注PHP中文網其他相關文章!