Объясните различия между функциями launch, async и runBlocking в контексте корутин Kotlin.
Ответ от нейросети
sobes.tech AI
В Kotlin корутины позволяют писать асинхронный код проще. Вот различия между launch, async и runBlocking:
-
launch— запускает новую корутину, которая выполняется параллельно, но не возвращает результат. Используется для фоновых задач, где результат не нужен. -
async— запускает корутину, которая возвращаетDeferred<T>, то есть обещание результата. Позволяет получить результат черезawait(). Используется, когда нужно получить результат асинхронной операции. -
runBlocking— блокирует текущий поток до завершения корутины. Обычно используется в main-функции или тестах, чтобы запустить корутины из синхронного кода.
Пример:
fun main() = runBlocking {
launch {
println("Запущена корутина без результата")
}
val deferred = async {
delay(1000)
return@async "Результат"
}
println("Ожидаем результат: ${deferred.await()}")
}
Здесь runBlocking запускает корутины и ждёт их завершения, launch запускает задачу без результата, async — с результатом.