Ответ
В Kotlin корутины можно запускать несколькими способами:
- launch – запускает корутину без возврата результата:
GlobalScope.launch {
// асинхронный код
}
- async – запускает корутину с возможностью получить результат через
await():
val deferred = GlobalScope.async {
// вычисления
42
}
val result = deferred.await()
- runBlocking – блокирует текущий поток до завершения корутины (используется в тестах или main()):
runBlocking {
delay(1000)
println("Done")
}
- coroutineScope – создает новую область видимости для корутин:
suspend fun doWork() = coroutineScope {
launch { /* задача 1 */ }
async { /* задача 2 */ }
}
Важно выбирать подходящий dispatcher (Dispatchers.IO, Dispatchers.Main и т.д.) в зависимости от типа работы.