create запускается на io, но оба map и обработчик subscribe в данном коде не выполняются: источник пустой и ничего не эмитит. Потоки этих обработчиков имеют смысл только после onNext.
Как определить потоки выполнения операторов RxJava в цепочке
create запускается на io, но оба map и обработчик subscribe в данном коде не выполняются: источник пустой и ничего не эмитит. Потоки этих обработчиков имеют смысл только после onNext.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Условие
Необходимо понять, в каких потоках будет работать create, map и subscribe, если запускать приведённый фрагмент кода из главного (UI) потока.
Observable.create<Int> { }
.map { }
.subscribeOn(Schedulers.io())
.observeOn(Schedulers.computation())
.map { }
.subscribe { }
Ответ
create запускается на io, но оба map и обработчик subscribe в данном коде не выполняются: источник пустой и ничего не эмитит. Потоки этих обработчиков имеют смысл только после onNext.
Если create отправит значение, первый map обработает его на io, второй map и конечный подписчик — на computation после observeOn. Построение цепочки происходит на UI, а subscribeOn переносит подписку. Не путайте пустое тело create с Observable.empty: первое не сообщает даже о завершении.