[kotlin] 코틀린(Kotlin) 코루틴 비동기 처리
코틀린은 스레드 기반의 비동기 처리를 쉽게 구현할 수 있도록 코루틴(coroutine)이라는 기능을 제공합니다. 코루틴은 경량 스레드로, 기본 스레드나 CPU 자원을 차지하지 않고도 비동기 처리를 수행할 수 있습니다.
코루틴 기본 개념
코루틴은 suspend
함수를 사용하여 비동기 작업을 실행할 수 있습니다. 일반적으로는 launch
나 async
와 같은 빌더를 사용하여 코루틴을 정의합니다.
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
를 통해 작업이 완료될 때까지 대기합니다.
결론
코틀린의 코루틴을 이용하면 비동기 작업을 간편하게 수행할 수 있습니다. 또한, 적은 오버헤드로 멀티스레딩을 구현할 수 있어서 더욱 효율적인 비동기 처리가 가능합니다.
참고자료: 코틀린 공식 문서