CompletableFuture 체이닝
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
난이도
중급
JDK 지원
CompletableFuture 체이닝
사용 가능
JDK 8 (2014년 3월) 이후 널리 사용 가능
동작 원리
CompletableFuture는 논블로킹 비동기 파이프라인을 가능하게 합니다. thenApply, thenCompose, thenAccept로 작업을 체이닝하고, exceptionally()로 오류를 처리합니다. 여러 Future를 allOf/anyOf로 조합할 수 있습니다.
관련 문서