Explique as diferenças entre as funções launch, async e runBlocking no contexto das coroutines Kotlin.
sobes.tech IA
Resposta da IA
Em Kotlin, as corrotinas permitem escrever código assíncrono de forma mais simples. Aqui estão as diferenças entre launch, async e runBlocking:
-
launch— inicia uma nova corrotina que é executada em paralelo, mas não retorna resultado. Usado para tarefas em segundo plano onde o resultado não é necessário. -
async— inicia uma corrotina que retorna umDeferred<T>, ou seja, uma promessa de resultado. Permite obter o resultado através deawait(). Usado quando é necessário obter o resultado de uma operação assíncrona. -
runBlocking— bloqueia a thread atual até que a corrotina termine. Geralmente usado na função main ou em testes para lançar corrotinas a partir de código síncrono.
Exemplo:
fun main() = runBlocking {
launch {
println("Corrotina sem resultado iniciada")
}
val deferred = async {
delay(1000)
return@async "Resultado"
}
println("Aguardando resultado: ${deferred.await()}")
}
Aqui, runBlocking inicia as corrotinas e espera que elas terminem, launch inicia uma tarefa sem resultado, async com resultado.