Sobes.tech
Junior — Middle

Чӣ гуна дар барномаҳои асинхронӣ корутинҳо боздошта ва муваққатӣ мешаванд?

sobes.tech AI

Ҷавоб аз AI

Дар Kotlin, корутинҳо бо ёрии объектҳои Job ва CoroutineScope идора мешаванд. Барои боздоштан ва қатъ кардани корутинҳо, механизмҳои зерин истифода мешаванд:

  • Боздоштан — корутинҳо метавонанд бо калиди suspend ва функсияҳое, ки иҷрои онҳоро бозмедоранд (масалан, delay()), боздошта шаванд. Ин ба ядро монеа намебарорад, балки корутин баъдан идома меёбад.

  • Бекор кардан (тамом кардан) — корутинҳоро метавон бо даъвати методи cancel() дар Job-и онҳо бекор кард. Ҳангоми бекор кардан, корутин хатои CancellationException мегирад ва бояд дуруст ба анҷом расад.

Масалан, бекор кардани корутин:

val job = CoroutineScope(Dispatchers.Default).launch {
    repeat(1000) { i ->
        println("Кор мекунам $i ...")
        delay(500)
    }
}

// Бекор кардани корутин пас аз 2 соат
CoroutineScope(Dispatchers.Default).launch {
    delay(2000)
    job.cancel()
    println("Корутин бекор шуд")
}

Бинобар ин, боздоштан қисми табиии кори корутинҳо аст, ва қатъ кардан — ин бекор кардани онҳо тавассути Job мебошад.