Próbuję połączyć 2 funkcje, aby działały równolegle na dwóch watkach za pomocą RxJavy. Niestety w konsoli po uruchomieniu poniższego kodu dostaję:
"getData main"
i po 10 sekundach
"getData3 main"
Funkcje zawsze odpalają się na tym samym wątku i jedna po drugiej. Wydaje mi się, że ten zapis powinien umożliwiać działanie równoległe na różnych wątkach.
fun getDataSync() {
compositeDisposable.add(
Observable.zip(
repository.getData().subscribeOn(Schedulers.io()),
repository.getData3().subscribeOn(Schedulers.io()),
{ a, b -> a + b }
)
.observeOn(AndroidSchedulers.mainThread())
.subscribe(
{
_data.value = it
},
{
_data.value = 0
}
)
)
}
class FakeRepositoryImpl @Inject constructor() : FakeRepository {
override fun getData(): Observable<Int> {
println("test2k200: getData " + Thread.currentThread().name)
Thread.sleep(10000)
return Observable.just(1)
}
override fun getData3(): Observable<Int> {
println("test2k200: getData3 " + Thread.currentThread().name)
return Observable.just(3)
}
}