Java 9 通过引入一些接口来支持创建反应式流: Publisher、Subscriber、Subscription和实现Publisher 接口的SubmissionPublisher 类。每个接口可以根据反应式流的原则扮演不同的角色。
我们可以使用Subscriber 接口订阅由publisher发布的数据。我们需要实现Subscriber 接口并为抽象方法提供实现。
示例
import java.util.concurrent.Flow; import java.util.concurrent.SubmissionPublisher; import java.util.stream.IntStream; public class SubscriberImpltest { public static class Subscriber implements Flow.Subscriber<Integer> { private Flow.Subscription subscription; private boolean isDone; @Override public void onSubscribe(Flow.Subscription subscription) { System.out.println("Subscribed"); this.subscription = subscription; this.subscription.request(1); } @Override public void onNext(Integer item) { System.out.println("Processing " + item); this.subscription.request(1); } @Override public void onError(Throwable throwable) { throwable.printstacktrace(); } @Override public void onComplete() { System.out.println("Processing done"); isDone = true; } } public static void main(String args[]) throws InterruptedException { SubmissionPublisher<Integer> publisher = new SubmissionPublisher<>(); Subscriber subscriber = new Subscriber(); publisher.subscribe(subscriber); IntStream intData = IntStream.rangeClosed(1, 10); intData.forEach(publisher::submit); publisher.close(); while(!subscriber.isDone) { Thread.sleep(10); } System.out.println("Done"); } }
输出
Subscribed Processing 1 Processing 2 Processing 3 Processing 4 Processing 5 Processing 6 Processing 7 Processing 8 Processing 9 Processing 10 Processing done Done
以上就是在Java 9中,我们如何实现Subscriber接口?的详细内容,更多请关注编程之家其它相关文章!
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。