Junior — Middle
Como é que a execução de coroutines é parada e suspensa em aplicações assíncronas?
sobes.tech IA
Resposta da IA
Em Kotlin, as corrotinas são geridas através de objetos Job e CoroutineScope. Para pausar e parar as corrotinas, utilizam-se os seguintes mecanismos:
-
Pausa — as corrotinas podem ser pausadas usando a palavra-chave
suspende funções que pausam a sua execução (por exemplo,delay()). Isto não bloqueia a thread, mas a corrotina retoma mais tarde. -
Cancelamento (paragem) — as corrotinas podem ser canceladas chamando o método
cancel()no seuJob. Ao cancelar, a corrotina recebe uma exceçãoCancellationExceptione deve terminar corretamente.
Exemplo de cancelamento de uma corrotina:
val job = CoroutineScope(Dispatchers.Default).launch {
repeat(1000) { i ->
println("A trabalhar $i ...")
delay(500)
}
}
// Parar a corrotina após 2 segundos
CoroutineScope(Dispatchers.Default).launch {
delay(2000)
job.cancel()
println("Corrotina cancelada")
}
Assim, a pausa é uma parte natural do trabalho das corrotinas, e a paragem é a sua cancelamento através de Job.