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
suspenda funkcií, ktoré samy pozastavujú vykonávanie (napríkladdelay()). 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 ichJob. Pri zrušení korutina dostane výnimkuCancellationExceptiona 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.