Определение потока выполнения при использовании observeOn в RxJava

Блок create выполнится на UI-потоке. Обработчик subscribe в данном примере вообще не вызовется, потому что источник не отправляет ни одного onNext.

Короткий ответ

Что ответить на собеседовании

Блок create выполнится на UI-потоке. Обработчик subscribe в данном примере вообще не вызовется, потому что источник не отправляет ни одного onNext.

Подробный разбор

Ответ с пояснениями

Условие

Нужно установить, в каком потоке будет выполнен оператор create и обработчик подписки, когда код запускается из главного (UI) потока.

Observable.create<Int> { }
    .observeOn(Schedulers.computation())
    .subscribe { }

Ответ

Блок create выполнится на UI-потоке. Обработчик subscribe в данном примере вообще не вызовется, потому что источник не отправляет ни одного onNext.

observeOn(computation) переключает доставку последующих уведомлений, а не выполнение самого create. Если добавить в источник onNext, его значение получит подписчик на computation. Пустой emitter в исходном коде также не отправляет onComplete, поэтому нельзя описывать пример как завершившийся поток с результатом.

Источник: reactivex.io.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее