Ответ
В Kotlin для многопоточности используются:
- Coroutines – легковесные потоки с suspend-функциями.
GlobalScope.launch(Dispatchers.IO) {
val result = async { fetchData() }.await()
withContext(Dispatchers.Main) { updateUI(result) }
}
-
Dispatchers (Main, IO, Default) – управляют потоком выполнения корутин.
-
Flow – асинхронный поток данных, поддерживает отмену и контекст.
flow { emit(data) }.flowOn(Dispatchers.IO).collect { ... }
- Mutex – блокировка для синхронизации доступа к общим ресурсам.
val mutex = Mutex()
mutex.withLock { sharedResource++ }
- Channel – коммуникация между корутинами (аналог BlockingQueue).
Для Java-совместимости:
ExecutorService,Handler,AsyncTask(устарел),RxJava.
Корутины предпочтительнее из-за простоты и отсутствия накладных расходов.