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.