Sobes.tech
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.