反应流如何与非阻塞I / O不同?什么是Java 8 future API无法做到的反应流可以做什么?
答案 0 :(得分:0)
与非阻塞I / O相同,Reactive Extensions(ReactiveX)提供非阻塞编程风格。
不仅如此,ReactiveX将所有内容都视为流,为流提供了许多操作。这个功能使异步编程非常容易,使我们免于回调地狱;)
我建议你阅读这份文件 http://reactivex.io/intro.html
这里是ReactiveX的好幻灯片。
答案 1 :(得分:0)
主要原因是ReactiveX提供了一些运营商来异步运行您的管道,如 SubscribeOn 或 ObserverOn 。并且还提供了Java8或Scala在其功能编程中默认提供的一些其他功能。
在这里,您可以看到有关异步运算符的示例,以了解其工作原理https://github.com/politrons/reactive/blob/master/src/test/java/rx/observables/scheduler/ObservableAsynchronous.java
此处RxJava的全局示例https://github.com/politrons/reactive
答案 2 :(得分:-1)
非阻塞I / O是比反应流更低级别的抽象,它为您提供这样的结构(将serviceX视为改造客户端):
Observable.zip(
service1.getFoo(1),
service2.doBar(xyz),
service3.makeBaz("meh"),
(a,b,c) -> service4.somethingElse(a+b+c)
)
.onErrorReturn("error");
这在7个联系人3个并行的服务中,当所有人都返回联系人时,他们的结果是第4个。