[kotlin] 코틀린에서의 비동기 작업 취소 방법

코틀린에서 비동기 작업을 취소하는 가장 일반적인 방법은 job을 사용하는 것입니다. job은 실행 중인 코루틴의 핸들을 나타내며, 취소하려는 작업에 해당하는 job을 가지고 있어야 합니다.

job을 사용하여 비동기 작업을 취소하는 기본적인 예제입니다:

import kotlinx.coroutines.*

fun main() {
    val job = GlobalScope.launch {
        repeat(10) {
            delay(500)
            println("Running task $it")
        }
    }

    delay(2500)
    job.cancel()
    println("Task cancelled")

    runBlocking {
        delay(5000)
    }
}

위의 예제에서는 GlobalScope.launch 함수를 사용하여 새로운 코루틴을 생성합니다. 이 코루틴은 0부터 9까지의 숫자를 출력하고, 각 숫자를 출력할 때마다 0.5초의 딜레이를 가지고 있습니다.

delay(2500)을 통해 2.5초를 기다린 후에 job.cancel()을 호출하여 작업을 취소합니다. 그리고 “Task cancelled”를 출력합니다.

runBlocking 블록을 사용하여 5초 동안 메인 함수를 유지하도록 합니다. 이렇게 함으로써 취소되기 전에 작업이 끝날 수 있도록 합니다.

여기에서 중요한 점은 job.cancel() 함수를 호출하면 취소 요청을 보내지만, 코루틴이 직접적으로 취소되는 것은 아닙니다. 따라서 코루틴 내부에서는 isActive 속성을 사용하여 실행을 중단해야 합니다.

만약 코루틴이 현재 실행 중인 코드 블록이 아닌 다른 장소에서 작업을 취소하려면 isActive를 확인하여 예외를 던지거나, 일부 특정한 동작을 수행해야 합니다.

코틀린의 코루틴은 다양한 취소 전략과 기능을 제공하므로 자세한 내용은 공식 문서를 참조하는 것이 좋습니다. 공식 문서에는 예외 처리, 예외가 발생한 경우의 후속 작업 처리 등 코루틴의 다양한 취소에 관한 정보가 포함되어 있습니다.

참고: