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

Multithreading 如何使用RxJava使多线程顺序运行,multithreading,rx-java,rx-java2,Multithreading,Rx Java,Rx Java2,假设有3个线程,T1、T2、T3。 我如何让它们按顺序运行,比如说,执行顺序是T1,T2,T3,T1,T2,T3。。。 我们可以用RxJava来实现它吗 可能有3个线程,分别打印T1、T2或T3,我们可以按顺序打印T1、T2或T3。您可以使用Observable.concat(request1、request2、request3),它将按顺序执行请求: Observable<String> r1 = getObs().subscribeOn(Schedulers.io()).obse

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


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

您可以使用
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);

谢谢,我试试看。如果它能工作,我会立即接受它作为正确的答案。AndroidSchedulers用于Android项目,它只是一个Java程序。你能用Java实现它吗?你能提供一个可执行的java代码来更好地表达如何做吗?不幸的是,java中没有内置的主线程调度程序,因为java中没有内置的多线程同步机制(比如Android中的
Looper
)。如果适用于您的情况,您可以使用主线程的
blockingsubscribe()
调用,或者您必须手动同步订阅方法并将其卸载到主线程。@nstosic谢谢,您能提供任何代码片段让我更好地理解它吗?
request1()
        .flatMap(d -> request2(d))
        .flatMap(d -> request3(d))
        .subscribeOn(Schedulers.io())
        .observeOn(AndroidSchedulers.mainThread())
        .subscribe();