Sobes.tech
Junior — Middle

Pode explicar o conceito de SupervisorJob no contexto das coroutines Kotlin?

sobes.tech IA

Resposta da IA

O SupervisorJob em Kotlin é um tipo especial de Job usado para gerir um grupo de corutinas, onde um erro numa corutina não cancela as outras. Num Job normal, se ocorrer uma exceção numa corutina filha, todo o Job pai e as suas corutinas filhas são cancelados.

No caso do SupervisorJob, as corutinas funcionam de forma independente: se uma delas terminar com erro, as outras continuam a execução. Isto é útil quando se quer lançar várias tarefas em paralelo e não parar tudo em caso de falha de uma.

Exemplo de uso:

val supervisor = SupervisorJob()
val scope = CoroutineScope(Dispatchers.Default + supervisor)

scope.launch {
    launch {
        // Esta corutina pode falhar, mas não afetará as outras
        throw RuntimeException("Erro")
    }
    launch {
        // Esta corutina continuará a trabalhar
        println("A trabalhar")
    }
}

Assim, o SupervisorJob ajuda a isolar erros entre corutinas filhas, garantindo uma execução mais robusta de tarefas paralelas.