[kotlin] 코틀린(Kotlin) 코루틴 비동기 처리

코틀린은 스레드 기반의 비동기 처리를 쉽게 구현할 수 있도록 코루틴(coroutine)이라는 기능을 제공합니다. 코루틴은 경량 스레드로, 기본 스레드나 CPU 자원을 차지하지 않고도 비동기 처리를 수행할 수 있습니다.

코루틴 기본 개념

코루틴은 suspend 함수를 사용하여 비동기 작업을 실행할 수 있습니다. 일반적으로는 launchasync와 같은 빌더를 사용하여 코루틴을 정의합니다.

import kotlinx.coroutines.*

fun main() {
    GlobalScope.launch {
        delay(1000)
        println("Hello")
    }
    Thread.sleep(2000)
}

위의 예제에서 GlobalScope.launch를 사용해 비동기로 작업을 실행하고, delay 함수를 통해 1초의 지연을 주었습니다.

코루틴을 사용한 비동기 작업

코루틴은 다음과 같이 async를 사용하여 비동기 작업의 결과를 반환할 수 있습니다.

import kotlinx.coroutines.*

suspend fun fetchUserData(): String {
    delay(1000)
    return "User Data"
}

fun main() = runBlocking {
    val userData = async { fetchUserData() }
    println("Loading user data...")
    println("User data: ${userData.await()}")
}

위의 예제에서 async를 사용하여 fetchUserData 함수를 비동기로 호출하고, await를 통해 작업이 완료될 때까지 대기합니다.

결론

코틀린의 코루틴을 이용하면 비동기 작업을 간편하게 수행할 수 있습니다. 또한, 적은 오버헤드로 멀티스레딩을 구현할 수 있어서 더욱 효율적인 비동기 처리가 가능합니다.

참고자료: 코틀린 공식 문서