一个订阅可以由一个发布者和一个订阅者共享,用于调解数据交换。这就是为什么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中文网其他相关文章!