자바 동시성 프로그래밍 - 비동기 프로그래밍

비동기 완료 처리

  • CompletableFuture는 비동기 작업의 완료를 위한 여러가지 메서드를 제공하고 있다.

img_117.png

완료 설정 메서드

  • CompletableFuture의 핵심 기능 중 하나로서 비동기 작업 결과를 사용자가 직접 완료할 수 있다.

complete()

img_118.png
  • CompletableFuture 가 완료되지 않았다면 주어진 값으로 설정하고 CompletableFuture를 완료 상태로 전환한다.

  • 이미 완료 상태이면 다른 값으로 다시 완료시킬 수 없으며 완료 상태로 전환하면 true, 그렇지 않으면 false를 반환한다.

img_119.png

complete() 예제 코드

img_134.png
img_135.png

completedFuture()

img_120.png
  • 주어진 값으로 이미 완료된 새로운 CompletableFuture 를 반환한다.

  • 비동기 작업을 수행하지 않고 미리 계산된 결과를 반환해야 할 때 유용하다.

img_121.png

completedFuture() 예제 코드

img_136.png
img_137.png

completeOnTimeout()

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

img_123.png

completeOnTimeout() 예제 코드

img_140.png
img_141.png

completeExceptionally()

img_124.png
  • CompletableFuture를 예외 상태로 완료시키는 데 사용되는 메서드로 주어진 예외 객체를 사용하여 비동기 작업을 예외로 처리하는 데 사용할 수 있다.

  • exceptionally() 또는 handle() 메서드를 사용하여 예외 처리 작업을 수행할 수 있으며 예외를 처리하고 대체 결과를 반환하거나 다른 작업을 수행할 수 있다.

img_125.png

completeExceptionally() 예제 코드

img_138.png
img_139.png

완료 상태 확인 메서드

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

img_126.png

isCancelled()

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

img_128.png

isDone()

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

img_129.png

isDone() 예제 코드

img_142.png
img_143.png

isCompletedExceptionally()

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

img_132.png

isCancelled() & isCompletedExceptionally() 예제 코드

img_144.png
img_145.png

CompletableFuture 의 완료 원리

img_133.png

이전 ↩️ - 비동기 프로그래밍 - 비동기 예외 처리

메인 ⏫

다음 ↪️ - 비동기 프로그래밍 - 비동기 대기 및 취소 처리

Last updated