Reputation: 4745
Assume that there are 3 threads, T1, T2, T3. How can I make them run sequentially, say, the execution order is T1, T2, T3, T1, T2, T3 ... Could we use RxJava to implement it?
Could it be possible that there are 3 threads and separately print out T1, T2 or T3, and we can print out T1 T2 T3 sequentially.
Upvotes: 0
Views: 862
Reputation: 1352
You can use Observable.concat(request1, request2, request3)
, which will execute requests sequentially:
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);
Or, if request need a result from previuous request - use flatMap
:
request1()
.flatMap(d -> request2(d))
.flatMap(d -> request3(d))
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe();
Upvotes: 1