10.4 小结

在本章中,你了解到Java 9是如何实现反应流规范的。它为带有非阻塞回压的异步流处理定义了标准。该标准基于以下三个要素。

  • 信息的发布者。
  • 该信息的一个或多个订阅者。
  • 发布者和消费者之间的订阅关系。

Java提供了三个接口来实现这些元素。

  • Flow.Publisher接口,用于实现信息的发布者。
  • Flow.Subscriber接口,用于实现该信息的订阅者(消费者)。
  • Flow.Subscription接口,用于实现发布者和订阅者之间的订阅关系。

Java还提供了一个实用工具类,即实现Publisher接口的SubmissionPublisher类,如果应用程序有默认行为,也可以使用它。

本章实现了两个示例,这两种实现可用于Java中的反应流。首先实现了一个事件通知系统,该系统实现了Subscriber类,使用SubmissionPublisher类将事件发送给订阅者。然后实现了一个新闻系统,它实现了所有必备元素。

尽管反应流规范定义了这些流的预期行为,但是基于Java提供的接口,还可以实现不同的行为。不过,这并不是什么好主意。

下一章将详细介绍可以在并发应用程序中使用的数据结构和同步机制。