Java 9 中 Subscription 介面的規則是什麼?


一個**Subscription**可以被一個釋出者和一個訂閱者共享,用於協調**資料****交換**。這就是**subscribe()**方法不返回建立的Subscription,而是返回**void**的原因。Subscription只通過**onSubscribe()**方法回撥傳遞給訂閱者。Subscription介面包含兩個方法:**request()**和**cancel()**。

語法

public interface Subscription {
   public void request(long n);
   public void cancel();
}

Subscription 介面規則

  • **Subscription.request()** 和 **Subscription.cancel()** 方法必須在其訂閱者上下文中呼叫。
  • Subscription 必須允許訂閱者在 **onNext()** 或 **onSubscribe()** 方法中同步呼叫 **Subscription.request()** 方法。
  • **Subscription.request()** 方法必須對釋出者和訂閱者之間可能的同步遞迴設定上限。
  • **Subscription.request()** 方法應透過及時返回來尊重其呼叫者的響應能力。
  • **Subscription.cancel()** 方法必須透過及時返回來尊重其呼叫者的響應能力,並且必須是**執行緒安全**的。
  • 在Subscription未取消的情況下,**Subscription.request(long n)** 方法必須註冊給定數量的額外元素,以生成到相應的訂閱者。
  • 在Subscription未取消的情況下,如果引數<= 0,**Subscription.request(long n)** 方法必須使用**IllegalArgumentException**呼叫**onError()**方法。
  • 在Subscription未取消的情況下,**Subscription.request(long n)** 方法可以同步呼叫此訂閱者或其他訂閱者的**onNext()**方法。
  • 在Subscription未取消的情況下,**Subscription.request(long n)** 方法可以同步呼叫此訂閱者或其他訂閱者的**onComplete()**或**onError()**方法。
  • 在Subscription未取消的情況下,**Subscription.cancel()** 方法必須請求釋出者停止向其訂閱者發出訊號。該操作不需要立即影響Subscription。
  • 在Subscription未取消的情況下,**Subscription.cancel()** 方法必須請求釋出者刪除對相應訂閱者的任何引用。
  • 呼叫**Subscription.cancel()** 和 **Subscription.request ()** 方法必須正常返回。
  • **Subscription**必須支援對請求的無限次呼叫,並支援高達**2^63-1**的需求。如果需求等於或大於2^63-1,則釋出者可以將其視為**有效**的**無界**的。

更新於:2020年4月22日

282 次瀏覽

啟動您的職業生涯

完成課程獲得認證

開始
廣告
© . All rights reserved.