Что такое корутины в Kotlin

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

Ответ

Корутины — это легковесные потоки для асинхронного выполнения кода без блокировки основного потока. Они позволяют писать асинхронный код последовательно, используя suspend-функции.

Ключевые особенности:

  • Легковесность: тысячи корутин могут работать параллельно с минимальными накладными расходами.
  • Structured Concurrency: корутины привязаны к CoroutineScope, что упрощает управление их жизненным циклом.
  • Отмена (cancellation): поддерживают отмену через Job.cancel().

Пример:

suspend fun fetchData(): String {  
    delay(1000) // Неблокирующая задержка  
    return "Data loaded"  
}  

fun loadData() {  
    CoroutineScope(Dispatchers.IO).launch {  
        val data = fetchData()  
        withContext(Dispatchers.Main) {  
            textView.text = data // Обновление UI в главном потоке  
        }  
    }  
}  

Диспетчеры:

  • Dispatchers.Main — UI-поток (Android).
  • Dispatchers.IO — для операций ввода-вывода.
  • Dispatchers.Default — CPU-интенсивные задачи.