Junior — Middle
Корутиндер жана тапшырмаларды башкарууда SupervisorJob менен жөнөкөй Jobдун айырмасы эмнеде?
sobes.tech AI
AIден жооп
Kotlinде, Job корутиналарда аткарылуучу жана корутиналардын иерархиясында көзөмөлдөнүүчү тапшырманы билдирет. SupervisorJob — бул Jobтин атайын түрү, ал балдар корутиналарда чыккан катага карата өзгөчөлүккө ээ.
Негизги айырма:
- Job: Эгер балдар корутиналардын бири каталар менен аяктагыс, ал каталар бардык ата-эне
Jobжана башка балдар корутиналарын токтотот. - SupervisorJob: Бир балдар корутиналарда чыккан каталар башка балдар корутиналарын жана ата-эне
Job-ду токтотпойт. Бул каталарды изоляциялоого жана башка тапшырмаларды улантууга мүмкүндүк берет.
Мисал:
val supervisor = SupervisorJob()
val scope = CoroutineScope(Dispatchers.Default + supervisor)
scope.launch {
launch {
// Бул корутин каталар менен аяктайт
throw Exception("Балдар корутиналарда каталар")
}
launch {
// Бул корутин башка каталарга карабастан иштөөдө калат
delay(1000)
println("Ишке ашуу улантылууда")
}
}
SupervisorJob колдонуу, бир иштин ката кетүүсү башка параллелдүү иштерге таасир этпесин каалаганда ыңгайлуу.