Module java.base

Interface Flow.Publisher<T>

类型参数:
T - 发布的项目类型
所有已知的子接口:
Flow.Processor<T,R>, HttpRequest.BodyPublisher
所有已知的实现类:
SubmissionPublisher
封闭类:
Flow
函数式接口:
这是一个函数式接口,因此可以用作lambda表达式或方法引用的赋值目标。

@FunctionalInterface public static interface Flow.Publisher<T>
项目(及相关控制消息)的生产者,由订阅者接收。每个当前的 Flow.Subscriber 按相同顺序接收相同的项目(通过方法 onNext),除非遇到丢弃或错误。如果发布者遇到不允许向订阅者发布项目的错误,该订阅者将收到 onError,然后不再接收任何消息。否则,当已知不会再向其发布消息时,订阅者将收到 onComplete。发布者确保每个订阅的订阅者方法调用严格按照 happens-before 顺序排序。

发布者可能在是否将丢弃(由于资源限制而无法发布项目)视为不可恢复错误的策略上有所不同。发布者也可能在订阅者在订阅之前生成或可用的项目是否接收上有所不同。

  • Method Summary

    Modifier and Type
    Method
    Description
    void
    subscribe(Flow.Subscriber<? super T> subscriber)
    如果可能,添加给定的订阅者。
  • Method Details

    • subscribe

      void subscribe(Flow.Subscriber<? super T> subscriber)
      如果可能,添加给定的订阅者。如果已经订阅,或者由于策略违规或错误导致订阅失败,则使用 IllegalStateException 调用订阅者的 onError 方法。否则,使用新的 Flow.Subscription 调用订阅者的 onSubscribe 方法。订阅者可以通过调用此订阅的 request 方法启用接收项目,并可以通过调用其 cancel 方法取消订阅。
      参数:
      subscriber - 订阅者
      抛出:
      NullPointerException - 如果订阅者为null