如何使用RxJava使多个线程顺序运行

时间:2018-06-08 03:10:39

标签: multithreading rx-java rx-java2

假设有3个线程,T1,T2,T3。 如何让它们顺序运行,比如说执行顺序是T1,T2,T3,T1,T2,T3 ...... 我们可以使用RxJava来实现它吗?

有可能有3个线程并分别打印出T1,T2或T3,我们可以顺序打印出T1 T2 T3。

1 个答案:

答案 0 :(得分:1)

您可以使用Observable.concat(request1, request2, request3),它将按顺序执行请求:

Observable<String> r1 = getObs().subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread());
Observable<String> r2 = getObs().subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread());
Observable<String> r3 = getObs().subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread());

Observable<String> result = Observable.concat(r3, r2, r1);

或者,如果请求需要来自前一个请求的结果,请使用flatMap

request1()
        .flatMap(d -> request2(d))
        .flatMap(d -> request3(d))
        .subscribeOn(Schedulers.io())
        .observeOn(AndroidSchedulers.mainThread())
        .subscribe();