[kotlin] 비동기 프로그래밍 지원 기능과 사용법
코틀린은 비동기 프로그래밍을 위한 다양한 기능을 제공합니다. 이 기능들을 사용하여 비동기 작업을 좀 더 쉽게 다룰 수 있습니다.
코루틴
코틀린은 코루틴이라는 경량 스레드를 제공합니다. 코루틴을 사용하면 비동기 작업을 효율적으로 관리할 수 있습니다. 코루틴은 suspend
키워드와 launch
, async
함수를 통해 간편하게 사용할 수 있습니다.
import kotlinx.coroutines.*
fun main() {
GlobalScope.launch {
val result = async { // 비동기로 실행
delay(1000)
10
}.await()
println(result)
}
Thread.sleep(2000)
}
콜백과 결합
코틀린은 콜백 지옥을 피하기 위해 await
과 suspendCancellableCoroutine
함수를 제공합니다. 이를 통해 비동기 작업의 결과를 기다리거나 중단시킬 수 있습니다.
suspend fun fetchData(): String {
return suspendCancellableCoroutine { continuation ->
fetchDataAsync { result, error ->
if (error != null) {
continuation.resumeWithException(error)
} else {
continuation.resume(result)
}
}
}
}
쓰레드 관리
코틀린은 kotlinx-coroutines-core
라이브러리를 통해 쓰레드 관리를 쉽게 할 수 있도록 지원합니다. 코루틴을 이용하면 따로 쓰레드를 생성하거나 조절할 필요가 없습니다.
fun fetchData() {
GlobalScope.launch(Dispatchers.IO) {
val result = withContext(Dispatchers.Default) {
// 작업 수행
}
updateUI(result)
}
}
코틀린은 이처럼 다양한 방법으로 비동기 프로그래밍을 지원하므로 개발자들은 편리하게 비동기 작업을 처리할 수 있습니다.