Java 9 中 Publisher 接口的规则是什么?

javaobject oriented programmingprogramming更新于 2025/10/23 6:04:17

Publisher  是无限数量的序列元素的提供者,根据从其订阅者收到的需求发布这些元素。Publisher<T>  接口负责发布 T 类型的元素,并提供 subscribe() 方法供订阅者连接到它。

public interface Publisher<T> {
   public void subscribe(Subscriber<? super T> s);

发布者接口规则:

  • 发布者向订阅者发出信号的onNext()方法总数必须始终小于或等于订阅者的订阅请求的元素总数。
  • 发布者可以发出比请求的更少的onNext()方法,并通过调用onComplete()或onError()方法终止订阅。
  • onSubscribe()、onNext()、onError()和必须以串行方式向 Subscriber  发出 onComplete() 方法信号。
  • 如果 Publisher 失败,则必须发出 onError() 方法信号。
  • 如果 Publisher 成功终止,则必须发出 onComplete() 方法信号。
  • 如果 Publisher 在 Subscriber 上发出 onError() 或 onComplete() 方法信号,则必须取消订阅者的订阅。
  • 一旦终端状态发出信号(onError()、onComplete()),就要求不能再发生任何信号。
  • 如果取消订阅,其订阅者必须停止信号。
  • Publisher.subscribe() 方法必须在向该 Subscriber  发出任何其他信号之前,在提供的订阅者上调用 onSubscribe() 方法并正常返回,除非提供的订阅者为空。在这种情况下,它必须向调用者抛出 NullPointerException 。
  • Publisher.subscribe() 方法可以根据需要多次调用,每次调用不同的订阅者。
  • 一个 Publisher  可以支持多个订阅者,并决定每个订阅是否可以是 单播 或 多播。

相关文章


有用资源