Что использовал для работы с многопоточностью

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

Ответ

В Android для многопоточности чаще всего использую:

  1. Kotlin Coroutines – предпочтительный способ для асинхронных операций. Легковесные, удобные с точки зрения отмены и обработки ошибок.
viewModelScope.launch {
    val result = withContext(Dispatchers.IO) {
        // Блокирующая операция
    }
    updateUI(result)
}
  1. RxJava – для сложных потоков данных, но сейчас чаще заменяют на Coroutines.
  2. Handler/Looper – для работы с главным потоком (например, Handler(Looper.getMainLooper())).
  3. ExecutorService – для пула потоков в фоновых задачах.
  4. LiveData/Flow – для потокобезопасной передачи данных в UI.

Важно избегать блокировок UI-потока и правильно выбирать Dispatcher в Coroutines (IO – для сети/БД, Default – для CPU-интенсивных задач).