Concurrency 중급

CompletableFuture를 사용하여 블로킹 없이 비동기 작업을 체이닝합니다.

✕ Pre-Java 8
Future<String> future =
    executor.submit(this::fetchData);
String data = future.get(); // blocks
String result = transform(data);
✓ Java 8+
CompletableFuture.supplyAsync(
    this::fetchData
)
.thenApply(this::transform)
.thenAccept(IO::println);
이 코드에 문제가 있나요? 알려주세요.
🔗

체이닝 가능

비동기 단계를 읽기 쉬운 파이프라인으로 구성합니다.

🚫

논블로킹

어떤 스레드도 결과를 기다리며 유휴 상태로 있지 않습니다.

🛡️

오류 처리

exceptionally()와 handle()로 깔끔한 오류 복구를 수행합니다.

이전 방식
블로킹 Future.get()
모던 방식
CompletableFuture
JDK 버전
8
난이도
중급
CompletableFuture 체이닝
사용 가능

JDK 8 (2014년 3월) 이후 널리 사용 가능

CompletableFuture는 논블로킹 비동기 파이프라인을 가능하게 합니다. thenApply, thenCompose, thenAccept로 작업을 체이닝하고, exceptionally()로 오류를 처리합니다. 여러 Future를 allOf/anyOf로 조합할 수 있습니다.

공유 𝕏 🦋 in