Sobes.tech
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 suspend ja funktsioone, mis ise peatavad täitmise (näiteks delay()). See ei blokeeri niiti, vaid korutina jätkub hiljem.

  • Tühistamine (lõpetamine) — korutinaid saab tühistada, kutsudes nende Job meetodi cancel(). Tühistamise ajal saab korutina CancellationException ja 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.