📌 Kotlin Coroutines의 CompletableDeferred
이해하기
1. 개요
CompletableDeferred
는 Deferred
의 한 구현체로, 외부에서 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 > 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 |