Sobes.tech
Junior — Middle

Ako sa vykonáva zastavenie a pozastavenie korutín v asynchrónnych aplikáciách?

sobes.tech AI

Odpoveď od AI

V Kotlinu sa korutínami spravujú pomocou objektov Job a CoroutineScope. Na pozastavenie a zastavenie korutín sa používajú nasledujúce mechanizmy:

  • Pozastavenie — korutiny môžu byť pozastavené pomocou kľúčového slova suspend a funkcií, ktoré samy pozastavujú vykonávanie (napríklad delay()). To neblokuje vlákno, ale korutina sa neskôr obnoví.

  • Zrušenie (zastavenie) — korutiny môžu byť zrušené volaním metódy cancel() na ich Job. Pri zrušení korutina dostane výnimku CancellationException a musí správne ukončiť.

Príklad zrušenia korutiny:

val job = CoroutineScope(Dispatchers.Default).launch {
    repeat(1000) { i ->
        println("Pracujem $i ...")
        delay(500)
    }
}

// Zastaviť korutinu po 2 sekundách
CoroutineScope(Dispatchers.Default).launch {
    delay(2000)
    job.cancel()
    println("Korutina zrušená")
}

Takže, pozastavenie je prirodzenou súčasťou práce korutín, a zastavenie je ich zrušenie cez Job.