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 мебошад.