📌 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 |