Junior — Middle
Ինչպե՞ս է SupervisorJob-ը տարբերվում սովորական Job-ից կոռուտինների և առաջադրանքների կառավարման համատեքստում։
sobes.tech AI
Պատասխան AI-ից
Kotlin- ում, Job-ը korutin-ներում ներկայացնում է մի աշխատանք, որը կարող է չեղարկվել և հետևվում է korutin-ների հիերարխիայում: SupervisorJob-ը հատուկ տեսակ է Job-ի, որը տարբեր է վարքագծով՝ երեխաների korutin-ներում արտահոսքների դեպքում:
Հիմնական տարբերությունը՝
- Job: Եթե երեխաներից մեկը ավարտվի սխալով, այդ սխալը չեղարկում է ամբողջ ծնողական
Job-ը և բոլոր մյուս երեխաների korutin-ները: - SupervisorJob: Սխալը երեխա korutin-ում չի չեղարկում մյուս երեխաների korutin-ները կամ ծնողական
Job-ը: Սա թույլ է տալիս առանձնացնել սխալները և շարունակել այլ աշխատանքների կատարմանը:
Օրինակ՝
val supervisor = SupervisorJob()
val scope = CoroutineScope(Dispatchers.Default + supervisor)
scope.launch {
launch {
// Այս korutin- ը կչեղարկվի սխալով
throw Exception("Սխալ երեխա korutin- ում")
}
launch {
// Այս korutin- ը կշարունակի աշխատել, չնայած մյուսում սխալին
delay(1000)
println("Կատարման շարունակություն")
}
}
SupervisorJob-ի օգտագործումը հարմար է, երբ ցանկանում եք, որ մեկ աշխատանքում ձախողումը չազդի մյուս միաժամանակյա աշխատանքների կատարմանը։