Flow支持Reactive Streams in Java

守給你的承諾、 提交于 2019-11-29 00:56:16

Java 的 JVM Flow 就是按照 reactive-stream 的 API 规范写的,来看看Flow长的什么样?

可以看到是在神奇 java.util.concurrent 包中,而且这是一个 Final 修饰的类。

java.util.concurrent.Flow包含以下4个接口:

* Flow.Processor(处理器)

* Flow.Publisher(发布者)

* Flow.Subscriber(订阅者)

* Flow.Subscription(订阅管理器)

这些接口都支持响应式流发布-订阅框架。Java 9也提供了实用类SubmissionPublisher。一个发布者产生一个或多个物品,这些物品由一个或多个消费者消耗。并且订阅者由订阅管理器管理。订阅管理器连接发布者和订阅者。

让我们来实现一下这个 Flow 玩玩:

日志输出:

这里使用起来是不是有点 RxJava 的味道。

Flow类允许相互关联的接口和静态方法来建立流控制组件,其中发布者产生由一个或多个订阅者消费的项目,每个订阅者由订阅管理。

Reactive Streams构建在java.util.concurrent.Flow容器对象下,开发者可以在这里找到Flow.Publisher,一个用作lambda表达式或方法引用的赋值目标功能接口。该接口可以让开发者更容易生成Flow.Subscription元素,并且将它们链接在一起。

另一个元素Flow.Subscriber,是异步工作机制,由请求触发。它可以从Flow.Subscription请求多个元素,开发者还可以根据需要自定义缓冲区大小。

这些接口适用于并发和分布式异步设置,它们之间的通信依赖于一种简单的流控制形式,可用于避免资源管理问题。

在一篇文章中,看到 Flow 有下面这个问题,智商有限

参考文档:

https://dzone.com/articles/java-9-flow-api-vs-lmax-disruptor https://github.com/reactive-streams/reactive-streams-jvm/ http://www.importnew.com/23155.html

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!