I have the following code in which I am using a few methods from rxJava api like buffer, observable from iterable, and parallization. I get inspired by this post: RxJava and parallel execution of observer code and I am almost sure I did it as https://stackoverflow.com/users/1011435/lordraydenmk has explained in his post, but my code is still executed sequentially in main thread;/ anybody can help me figure out what I am doing wrong here?
Thanks in advance!
private static Observable<String> getPositions(List<String> id) throws InterruptedException {
System.out.println("thread: " + Thread.currentThread().getName());
Thread.sleep(500);
return Single.fromCallable(() -> {
if (id.contains("3")) {
return Arrays.asList("a", "aa", "aaa");
} else if (id.contains("2")) {
return Arrays.asList("b", "bb", "bbb");
}
return Arrays.asList("c", "cc", "ccc");
}).flatMapObservable(Observable::fromIterable).subscribeOn(Schedulers.computation());
}
public static void main(String[] args) throws InterruptedException {
Observable<String> a = Observable.fromIterable(Arrays.asList("1", "2", "3"));
a.buffer(2).flatMap(buff -> getPositions(buff), 4).toList().subscribe(val -> System.out.println(val));
Thread.sleep(1500);
}
the output is:
thread: main
thread: main
[b, bb, bbb, a, aa, aaa]