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