一个订阅可以由一个发布者和一个订阅者共享,用于调解数据交换。这就是为什么subscribe()方法不返回创建的订阅,而是返回void。订阅仅通过onSubscribe()方法回调传递给订阅者。订阅接口包含两个方法:request()和cancel()。
public interface Subscription { public void request(long n); public void cancel(); }
订阅接口规则:
- 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接口有哪些规则?的详细内容,更多请关注编程之家其它相关文章!
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。