Junior — Middle
Can you explain what SupervisorScope is and how to use it in applications?
sobes.tech AI
Answer from AI
SupervisorScope is a special coroutine scope in Kotlin used to manage a group of coroutines where the failure of one coroutine does not lead to the cancellation of all others.
In a regular CoroutineScope, if one coroutine fails, all child coroutines are canceled. In SupervisorScope, coroutines operate independently: if one fails, the others continue to run.
Example usage:
import kotlinx.coroutines.*
fun main() = runBlocking {
supervisorScope {
val child1 = launch {
println("Child 1 starts")
delay(100)
throw Exception("Error in child 1")
}
val child2 = launch {
println("Child 2 starts")
delay(200)
println("Child 2 completed")
}
child1.join()
child2.join()
}
}
In this example, an error in child1 does not cancel child2. This is useful when you want a failure in one task not to interrupt the execution of others.