Flow支持Reactive Streams in Java

Java 的 JVM Flow 就是按照 reactive-stream 的 API 規範寫的,來看看Flow長的什麼樣?html

能夠看到是在神奇 java.util.concurrent 包中,並且這是一個 Final 修飾的類。java

java.util.concurrent.Flow包含如下4個接口:react

* Flow.Processor(處理器)git

* Flow.Publisher(發佈者)github

* Flow.Subscriber(訂閱者)api

* Flow.Subscription(訂閱管理器)併發

這些接口都支持響應式流發佈-訂閱框架。Java 9也提供了實用類SubmissionPublisher。一個發佈者產生一個或多個物品,這些物品由一個或多個消費者消耗。而且訂閱者由訂閱管理器管理。訂閱管理器鏈接發佈者和訂閱者。框架

讓咱們來實現一下這個 Flow 玩玩:異步

日誌輸出:jvm

這裏使用起來是否是有點 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

相關文章
相關標籤/搜索