자바 동시성 프로그래밍 - 비동기 프로그래밍
비동기 완료 처리
CompletableFuture는 비동기 작업의 완료를 위한 여러가지 메서드를 제공하고 있다.

완료 설정 메서드
CompletableFuture의 핵심 기능 중 하나로서 비동기 작업 결과를 사용자가 직접 완료할 수 있다.
complete()

CompletableFuture가 완료되지 않았다면 주어진 값으로 설정하고CompletableFuture를 완료 상태로 전환한다.이미 완료 상태이면 다른 값으로 다시 완료시킬 수 없으며 완료 상태로 전환하면
true, 그렇지 않으면false를 반환한다.

complete() 예제 코드


completedFuture()

주어진 값으로 이미 완료된 새로운
CompletableFuture를 반환한다.비동기 작업을 수행하지 않고 미리 계산된 결과를 반환해야 할 때 유용하다.

completedFuture() 예제 코드


completeOnTimeout()

지정된 타임아웃 이전에 완료되지 않은 경우 주어진 기본 값으로 완료한다.

completeOnTimeout() 예제 코드


completeExceptionally()

CompletableFuture를 예외 상태로 완료시키는 데 사용되는 메서드로 주어진 예외 객체를 사용하여 비동기 작업을 예외로 처리하는 데 사용할 수 있다.exceptionally()또는handle()메서드를 사용하여 예외 처리 작업을 수행할 수 있으며 예외를 처리하고 대체 결과를 반환하거나 다른 작업을 수행할 수 있다.

completeExceptionally() 예제 코드


완료 상태 확인 메서드
CompletableFuture는 완료 상태를 명확하게 구분할 수 있도록isCompletedExceptionally()메서드를 추가 제공한다.

isCancelled()

작업이 정상적으로 완료되기 전에 취소 되었으면
true를 반환한다.

isDone()

정상적으로, 예외적으로 또는 취소를 통해 완료된 경우 등 어떤 방식으로든 완료된 경우
true를 반환한다.

isDone() 예제 코드


isCompletedExceptionally()

CompletableFuture가 취소 되거나completeExceptionally()의 명시적 호출 또는CompletionStage실행의 갑작스런 종료 등 예외적으로 완료된 경우true를 반환한다.

isCancelled() & isCompletedExceptionally() 예제 코드


CompletableFuture 의 완료 원리

Last updated