RxJava的并行编程
RxJava发射的数据流虽然经过各种变换,切换线程,但并没有产生并行效果。
并行:多个处理器或多核处理器同时处理多个任务。
并发:单个处理器同时处理多个任务。
1.Java8并行流 集合上调用parallelStream
@TargetApi(24)
private void parallelStream(){
mList.parallelStream()
.map(new java.util.function.Function<String, String>() {
@Override
public String apply(String s) {
return s.toUpperCase();
}
}).forEach(new java.util.function.Consumer<String>() {
@Override
public void accept(String s) {
}
});
}
2.RxJava借助FlatMap实现
FlatMap:将这个Observable转换为多个发射原始数据的Observables,并收集发射的全部数据,不保证顺序,统一发射出去。若用了自定义调度器,则需要在doFinally中关闭调度器。
3.使用Round-Robin实现负载均衡groupBy + flatMap
负载均衡:把来自用户的请求,轮流发送给服务器进行处理。此处把数据分组,然后一起发送处理,减少了Observable的创建,从而节省了系统资源。
Observable.