본문 바로가기

Kotlin/kotlinx.coroutines

CompletableJob

📌 Kotlin Coroutines의 CompletableJob 이해하기

1. 개요

CompletableJobJob 인터페이스를 확장한 것으로, 외부에서 complete() 함수를 호출하여 작업을 완료할 수 있는 코루틴 작업을 나타냅니다. 주로 Job()SupervisorJob() 생성자 함수에 의해 반환됩니다.

2. 주요 기능

  • 완료: complete(): Boolean 함수를 호출하여 작업을 완료할 수 있습니다. 이 호출로 작업이 완료되면 true를 반환하고, 이미 완료된 경우에는 false를 반환합니다.
  • 예외적 완료: completeExceptionally(exception: Throwable): Boolean 함수를 사용하여 작업을 예외와 함께 완료할 수 있습니다. 이 호출로 작업이 예외적으로 완료되면 true를 반환하고, 이미 완료된 경우에는 false를 반환합니다.

3. 생성 방법

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


import kotlinx.coroutines.*

fun main() {
    // 활성 상태의 CompletableJob 생성
    val job: CompletableJob = Job()

    // SupervisorJob을 사용하여 CompletableJob 생성
    val supervisorJob: CompletableJob = SupervisorJob()
}

4. 사용 예시

CompletableJob을 사용하여 외부에서 작업을 완료하는 예시입니다:


import kotlinx.coroutines.*

fun main() = runBlocking {
    val job = Job()

    launch(job) {
        try {
            println("작업 시작")
            delay(1000L)
            println("작업 완료")
        } finally {
            println("작업이 취소되었거나 완료되었습니다.")
        }
    }

    delay(500L)
    println("작업을 완료합니다.")
    job.complete()

    job.join()
    println("메인 함수 종료")
}

위 예시에서, Job을 생성하고 해당 작업을 실행하는 코루틴을 시작합니다. 500밀리초 후에 job.complete()를 호출하여 작업을 완료합니다. 코루틴은 작업이 완료되었음을 감지하고 종료 메시지를 출력합니다.

5. 주의사항

  • CompletableJob 인터페이스의 모든 함수는 스레드 안전하게 설계되어 여러 코루틴에서 안전하게 호출할 수 있습니다.
  • 이 인터페이스는 향후 새로운 메서드가 추가될 수 있으므로, 서드 파티 라이브러리에서 상속하여 사용하는 것은 권장되지 않습니다.

📌 원본 출처

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

🔗 Kotlin Coroutines 공식 문서 - CompletableJob

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

CompletionHandler  (0) 2025.02.07
completeWith  (0) 2025.02.07
CompletableDeferred  (0) 2025.02.07
CloseableCoroutineDispatcher  (0) 2025.02.07
CancellableContinuation  (0) 2025.02.07