flow api 是自 java 9 以来对反应式流规范的官方支持。它是 iterator 和 observer 的组合模式。 flow api 是一种互操作规范,而不是像 rxjava 这样的最终用户 api。
flow api 由四个基本接口组成:
订阅者:订阅者向发布者订阅回调。 发布者:发布者向注册订阅者发布数据项流。订阅 :发布者和订阅者之间的链接。处理器:处理器位于发布者和订阅者之间,并将一个流转换为另一个流。 在下面的示例中,我们创建了一个基本订阅者,它请求一个数据对象,打印它并请求另一个数据对象。我们可以使用 java 提供的发布者实现 (submissionpublisher) 来完成我们的会话。
示例import java.util.concurrent.flow;import java.util.list;import java.util.concurrent.submissionpublisher;class mysubscriber<t>implements flow.subscriber<t> { private flow.subscription subscription; @override public void onsubscribe(flow.subscription subscription) { this.subscription = subscription; this.subscription.request(1); } @override public void onnext(t item) { system.out.println(item); subscription.request(1); } @override public void onerror(throwable throwable) { throwable.printstacktrace(); } @override public void oncomplete() { system.out.println("done"); }}// main classpublic class flowtest { public static void main(string args[]) { list<string> items = list.of("1", "2", "3", "4", "5", "6", "7", "8", "9", "10"); submissionpublisher<string> publisher = new submissionpublisher<>(); publisher.subscribe(new mysubscriber<>()); items.foreach(s -> { try { thread.sleep(1000); } catch (interruptedexception e) { e.printstacktrace(); } publisher.submit(s); }); publisher.close(); }}
输出12345678910done
以上就是如何在java 9中使用flow api实现响应式流?的详细内容。