Francis Bacon
Francis Bacon

Reputation: 4745

How to use RxJava to make multiple thread to run sequentially

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

Answers (1)

Mamykin Andrey
Mamykin Andrey

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

Related Questions