Rx java 如何使用RxJava为集合中的每个元素并行调用方法

Rx java 如何使用RxJava为集合中的每个元素并行调用方法,rx-java,Rx Java,我有以下两个方法,需要为列表中的所有名称并行调用findDetails(name)方法。如何使用RxJava实现这一点? 基本上,我想在不同的线程中为集合中的每个元素调用findDetails方法 public List<Bean> findStudentDetails(List<String> names){ names.forEach(s->{ findDetails(s); }); } priv

我有以下两个方法,需要为列表中的所有名称并行调用findDetails(name)方法。如何使用RxJava实现这一点? 基本上,我想在不同的线程中为集合中的每个元素调用findDetails方法

public List<Bean> findStudentDetails(List<String> names){

        names.forEach(s->{
            findDetails(s);
         });

}


private Bean findDetails(String name){
           //some io operation
         } 
公共列表查找学生详细信息(列表名称){
名称。forEach(s->{
尾翼;
});
}
私有Bean findDetails(字符串名称){
//一些io操作
} 

使您的方法返回
可观察
,然后
flatMap
您的
可观察
使用应用的
subscribeOn
操作符:

private Observable<Bean> findDetails(String name) {
    return Observable.fromCallable(() -> { //or any other creation method
        //some io operation
    }
}

public Observable<List<Bean>> findStudentDetails(List<String> names) {
    return Observable.from(names)
        .flatMap(s -> findDetails(s).subscribeOn(Schedulers.computation())
        .toList()
}
私有可观察findDetails(字符串名称){
返回Observable.fromCallable(()->{//或任何其他创建方法
//一些io操作
}
}
公共可观察findStudentDetails(列表名称){
返回可观察的。来自(名称)
.flatMap->findDetails.subscribeOn(Schedulers.computation())
托利斯先生()
}
注意:计算
调度程序
将线程计数限制为可用CPU内核的数量,以便在高强度操作中获得更好的性能。有关更多信息,请查看关于
调度程序的这一伟大答案
-


同时查看这篇关于并行化的文章-

你能再解释一下吗?这里的并行是什么意思?@Akbar我已经重新表述了我的问题,让它更清楚