Sobes.tech
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 колдонуу, бир иштин ката кетүүсү башка параллелдүү иштерге таасир этпесин каалаганда ыңгайлуу.