Junior — Middle
Kuidas toimub korutinate peatamine ja ajutine lõpetamine asünkroonsetes rakendustes?
sobes.tech AI
Vastus AI-lt
Kotlinis hallatakse korutinasid Job ja CoroutineScope objektide kaudu. Korutinate peatamiseks ja lõpetamiseks kasutatakse järgmisi mehhanisme:
-
Peatamine — korutinaid saab peatada, kasutades märksõna
suspendja funktsioone, mis ise peatavad täitmise (näiteksdelay()). See ei blokeeri niiti, vaid korutina jätkub hiljem. -
Tühistamine (lõpetamine) — korutinaid saab tühistada, kutsudes nende
Jobmeetodicancel(). Tühistamise ajal saab korutinaCancellationExceptionja peab õigesti lõpetama.
Näide korutina tühistamisest:
val job = CoroutineScope(Dispatchers.Default).launch {
repeat(1000) { i ->
println("Töötan $i ...")
delay(500)
}
}
// Tühista korutina 2 sekundi pärast
CoroutineScope(Dispatchers.Default).launch {
delay(2000)
job.cancel()
println("Korutina tühistatud")
}
Seega, peatamine on korutinate loomulik osa, ja nende lõpetamine on nende tühistamine Job kaudu.