[kotlin] 코루틴 대기와 일시 중단

코루틴은 비동기 프로그래밍을 위한 Kotlin의 핵심 기능 중 하나입니다. 코루틴은 다른 프로세스나 쓰레드를 차단하지 않고 비동기 코드를 실행할 수 있는 방법을 제공합니다. 그럼에도 불구하고, 때로는 코루틴을 대기하거나 일시 중단해야 하는 상황이 발생할 수 있습니다.

코루틴 대기

코루틴이 완료되기를 기다리고 결과를 받아오려면 await 함수를 사용할 수 있습니다. await 함수를 호출하면 코루틴이 완료될 때까지 현재 코루틴은 일시 중단됩니다.

예를 들어, async 함수를 사용하여 결과를 반환하는 코루틴을 생성할 수 있습니다.

import kotlinx.coroutines.*

suspend fun fetchData(): String {
    delay(1000) // 비동기 작업 시뮬레이션
    return "Data"
}

fun main() = runBlocking {
    val result = async { fetchData() }
    println("Waiting for result...")
    println("Result: ${result.await()}")
}

이 예제에서 fetchData 함수는 1초의 지연 후에 “Data”를 반환하도록 설정되어 있습니다. async 함수는 결과를 반환하는 코루틴을 생성하고, await 함수를 통해 그 결과를 기다린 다음 출력합니다.

코루틴의 일시 중단

코루틴은 delay 함수를 사용하여 일시 중단할 수 있습니다. delay 함수는 주어진 시간(밀리초)동안 현재 코루틴의 실행을 일시 중단시킵니다.

아래의 예제는 delay 함수를 사용하여 1초 동안 코루틴을 일시 중단하는 방법을 보여줍니다.

import kotlinx.coroutines.*

fun main() = runBlocking {
    println("Start")
    delay(1000) // 1초 동안 일시 중단
    println("End")
}

결론

코루틴을 사용하여 비동기적으로 작업을 수행할 때 대기하거나 일시 중단해야 하는 상황이 발생할 수 있습니다. await 함수를 사용하여 코루틴의 완료를 기다리거나 delay 함수를 사용하여 코루틴을 일시 중단할 수 있습니다.

코루틴은 비동기 프로그래밍을 보다 쉽고 효율적으로 만들어주는 강력한 도구입니다. 대기 및 일시 중단과 같은 기능을 활용하여 코루틴을 효율적으로 활용할 수 있습니다.

참고 문헌: Kotlin Coroutines Guide