Sobes.tech
Junior — Middle

Mi a különbség a SupervisorJob és a szokásos Job között a korutinok és a feladatkezelés kontextusában?

sobes.tech MI

Válasz az MI-től

Kotlinban a Job a korutinokban egy olyan feladatot képvisel, amelyet le lehet mondani, és amelyet a korutinok hierarchiájában követnek nyomon. A SupervisorJob egy speciális típusú Job, amely különbözik a viselkedésében az alárendelt korutinokban fellépő kivételeknél.

Fő különbség:

  • Job: Ha az egyik alárendelt korutin hibával ér véget, ez a hiba az egész szülő Job-t és az összes többi alárendelt korutint leállítja.
  • SupervisorJob: Egy hiba egy alárendelt korutinban nem állítja le a többi alárendelt korutint vagy a szülő Job-t. Ez lehetővé teszi a hibák izolálását és más feladatok folytatását.

Példa:

val supervisor = SupervisorJob()
val scope = CoroutineScope(Dispatchers.Default + supervisor)

scope.launch {
    launch {
        // Ez a korutin hibával fog végződni
        throw Exception("Hiba az alárendelt korutinban")
    }
    launch {
        // Ez a korutin folytatja a működést, a másik hibája ellenére
        delay(1000)
        println("A végrehajtás folytatódik")
    }
}

A SupervisorJob használata akkor hasznos, amikor azt szeretné, hogy egy feladat hibája ne befolyásolja más párhuzamos feladatok végrehajtását.