Определение, на каком потоке работают create и subscribe в RxJava

И блок Observable.create, и обработчик subscribe выполнятся в главном потоке. В приведённой цепочке нет оператора, который переключает Scheduler.

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

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

И блок Observable.create, и обработчик subscribe выполнятся в главном потоке. В приведённой цепочке нет оператора, который переключает Scheduler.

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

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

Условие

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

Observable.create<Int> {
    it.onNext(0)
}
.subscribe {
    println(it)
}

Ответ

И блок Observable.create, и обработчик subscribe выполнятся в главном потоке. В приведённой цепочке нет оператора, который переключает Scheduler.

Подписка синхронно вызывает источник, источник сразу отправляет onNext(0), и println печатает 0 на том же потоке. Само слово Observable не означает фоновую работу. В коде также нет onComplete: это не мешает получить значение, но источник не сообщает о нормальном завершении.

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

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

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

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

Подробнее