Sobes.tech
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-ի օգտագործումը հարմար է, երբ ցանկանում եք, որ մեկ աշխատանքում ձախողումը չազդի մյուս միաժամանակյա աշխատանքների կատարմանը։