Junior — Middle
Korutinlər və tapşırıqların idarə olunması kontekstində SupervisorJob ilə adi Job arasındakı fərq nədir?
sobes.tech Süni İntellekt
AI-dan cavab
Kotlin-də, Job koroutinlarda yerinə yetirilə bilən və koroutinlərin nizamında izlənən vəzifəni təmsil edir. SupervisorJob isə, uşaq koroutinlərdəki istisnalara qarşı davranış fərqli olan xüsusi Job növüdür.
Əsas fərq:
- Job: Əgər uşaq koroutinlərdən biri səhvlə tamamlanarsa, bu səhv bütün valideyn
Job-u və digər uşaq koroutinləri ləğv edir. - SupervisorJob: Uşaq koroutinindəki səhv digər uşaq koroutinlərini və ya valideyn
Job-u ləğv etmir. Bu, səhvləri izolyasiya etməyə və digər tapşırıqları davam etdirməyə imkan verir.
Nümunə:
val supervisor = SupervisorJob()
val scope = CoroutineScope(Dispatchers.Default + supervisor)
scope.launch {
launch {
// Bu koroutine səhvlə nəticələnəcək
throw Exception("Uşaq koroutinində səhv")
}
launch {
// Bu koroutine digərindəki səhvə baxmayaraq işləməyə davam edəcək
delay(1000)
println("İcra davam edir")
}
}
SupervisorJob-dan istifadə, bir tapşırığın uğursuzluğunun digər paralel tapşırıqlara təsir etməməsini istədiyiniz zaman əlverişlidir.