Ответ
В Kotlin корутины можно запустить несколькими способами:
- launch – запускает корутину без возврата результата (fire-and-forget):
GlobalScope.launch {
// асинхронный код
}
- async – запускает корутину с возможностью получения результата через
await():
val deferred = GlobalScope.async {
// вычисления
return@async результат
}
val result = deferred.await()
- runBlocking – блокирует текущий поток до завершения корутины (используется в тестах или main()):
runBlocking {
// блокирующий вызов
}
- coroutineScope – создает новую область видимости для корутин без блокировки текущего потока:
suspend fun foo() = coroutineScope {
launch { /* ... */ }
}
Важно: GlobalScope не рекомендуется для production кода – лучше использовать явные CoroutineScope с привязкой к жизненному циклу (например viewModelScope в Android).