코루틴은 비동기 프로그래밍을 위한 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