我正在寻找一种方法将多个事件流与merge()运算符组合在一起,并且拥有有限数量的“活动流”。例如,当我合并6个流(它们都在不同的线程上工作)时,merge()将订阅所有这些流,但我需要它首先订阅3,当其中一个完成另一个时,应该订阅直到所有6个流完成。是否可以通过merge或任何其他RxJava运算符实现此目的,还是应该由我自己编写?
答案 0 :(得分:0)
您可以在合并运算符中使用值maxConcurrency,但您必须将所有Observable包装在一起。
@Test
public void testMergeMaxConcurrency() {
Observable.merge(Observable.just(
Observable.just(3),
Observable.just(5),
Observable.just(1),
Observable.just(4),
Observable.just(2)), 2)
.collect(ArrayList<Integer>::new, ArrayList::add)
.doOnNext(Collections::sort)
.subscribe(System.out::println);
}