📌 Kotlin Coroutines의 CompletableJob 이해하기
1. 개요
CompletableJob은 Job 인터페이스를 확장한 것으로, 외부에서 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 > 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 |