final List<Order> orders = Observable .from(searchAttributes) .filter(searchAttribute-> !searchAttribute.isEmpty()) .flatMap(searchAttribute-> Observable.just(networkCall(searchAttribute)).subscribeOn(Schedulers.io())) .toList() .toBlocking() .single();
Я использую следующую статью для изучения RxJava: https://proandroiddev.com/understanding-rxjava-subscribeon-and-observeon-744b0c6a41ea
В приведенном выше коде функция networkCall должна выполняться в отдельном потоке ввода-вывода, однако сетевой вызов происходит в том же потоке ввода-вывода в основном последовательно. Как распараллелить вызов с помощью RxJava?
С RxJava 2 можно использовать .parallel.
.parallel
С этот ответ :
Flowable<Integer> vals = Flowable.range(1, 10); vals.parallel() .runOn(Schedulers.computation()) .map(i -> intenseCalculation(i)) .sequential() .subscribe(val -> System.out.println(val));