Назад к вопросам
Junior — Middle
74
Каким образом осуществляется остановка и приостановка выполнения корутин в асинхронных приложениях?
Компании, где спрашивали
Joy Dev
Ответ от нейросети
sobes.tech 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.