본문 바로가기

Kotlin/kotlinx.coroutines

CompletableDeferred

📌 Kotlin Coroutines의 CompletableDeferred 이해하기

1. 개요

CompletableDeferredDeferred의 한 구현체로, 외부에서 complete 또는 cancel 함수를 통해 완료 상태로 만들 수 있는 비동기 작업을 나타냅니다.

2. 주요 기능

  • 완료: complete(value: T): Boolean 함수를 사용하여 작업을 완료할 수 있습니다.
  • 예외적 완료: completeExceptionally(exception: Throwable): Boolean 함수를 통해 예외를 발생시키며 작업을 완료할 수 있습니다.
  • 취소: cancel(cause: CancellationException? = null): Boolean 함수를 사용하여 작업을 취소할 수 있습니다.

3. 생성 방법

CompletableDeferred는 다음과 같은 방법으로 생성할 수 있습니다:


import kotlinx.coroutines.*

fun main() {
    // 활성 상태의 CompletableDeferred 생성
    val deferred: CompletableDeferred = CompletableDeferred()

    // 이미 완료된 CompletableDeferred 생성
    val completedDeferred: CompletableDeferred = CompletableDeferred(42)
}

4. 사용 예시

CompletableDeferred를 사용하여 비동기 작업을 수동으로 완료하는 예시입니다:


import kotlinx.coroutines.*

fun main() = runBlocking {
    val deferred = CompletableDeferred()

    launch {
        // 1초 후에 작업 완료
        delay(1000L)
        deferred.complete(100)
    }

    println("결과: ${deferred.await()}")
}

위 예시에서, CompletableDeferred는 별도의 코루틴에서 1초 후에 완료되며, await()를 통해 결과를 얻을 수 있습니다.

5. 주의사항

  • complete 함수는 이미 완료되었거나 완료 중인 경우 false를 반환합니다.
  • cancel 함수는 작업이 취소 상태로 전환되면 true를 반환합니다.
  • 모든 함수는 스레드 안전하게 설계되어 여러 코루틴에서 안전하게 호출할 수 있습니다.

📌 원본 출처

본 문서의 내용은 Kotlin 공식 문서를 참고하여 작성되었습니다. 자세한 내용은 아래 공식 문서를 통해 확인할 수 있습니다.

🔗 Kotlin Coroutines 공식 문서 - CompletableDeferred

'Kotlin > kotlinx.coroutines' 카테고리의 다른 글

completeWith  (0) 2025.02.07
CompletableJob  (0) 2025.02.07
CloseableCoroutineDispatcher  (0) 2025.02.07
CancellableContinuation  (0) 2025.02.07
cancelChildren  (0) 2025.02.07