Какие знаешь способы реализации многопоточности

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

Ответ

В Android есть несколько способов работы с потоками:

  1. Thread/Runnable - базовый способ, но требует ручного управления:
new Thread(() -> {
    // Фоновая работа
}).start();
  1. Handler/Looper - для работы с UI из фонового потока:
Handler handler = new Handler(Looper.getMainLooper());
handler.post(() -> {
    // Обновление UI
});
  1. AsyncTask (устарел) - для простых фоновых задач с обновлением UI.

  2. ExecutorService - пул потоков для параллельных задач:

ExecutorService executor = Executors.newFixedThreadPool(4);
executor.execute(() -> {
    // Фоновая работа
});
  1. Coroutines - современный подход с Kotlin:
viewModelScope.launch(Dispatchers.IO) {
    val data = fetchData()
    withContext(Dispatchers.Main) {
        updateUI(data)
    }
}
  1. RxJava - реактивное программирование (сложнее, но мощнее).

Для работы с UI из фона всегда используйте главный поток (Main/UI thread). Корутины сейчас рекомендуемый подход.