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,則釋出者可以將其視為**有效**的**無界**的。
廣告
資料結構
網路
關係資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP