Sobes.tech
Назад к вопросам
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.