Какие знаешь виды потоков в RxJava

«Какие знаешь виды потоков в RxJava» — вопрос из категории Реактивное программирование, который задают на 23% собеседований Android Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

В RxJava есть несколько видов потоков (Schedulers):

  1. Schedulers.io() - для I/O операций (сеть, БД, файлы). Имеет неограниченный пул потоков.
  2. Schedulers.computation() - для CPU-интенсивных задач. Число потоков = числу ядер CPU.
  3. Schedulers.newThread() - создает новый поток для каждой задачи (не переиспользует).
  4. Schedulers.single() - один общий поток для последовательного выполнения.
  5. Schedulers.trampoline() - выполняет задачи в текущем потоке (обычно для тестов).
  6. AndroidSchedulers.mainThread() (из RxAndroid) - главный поток UI.

Пример:

Observable.just("Data")
    .subscribeOn(Schedulers.io()) // выполнение в IO потоке
    .observeOn(AndroidSchedulers.mainThread()) // результат в UI поток
    .subscribe { result -> textView.text = result }