[Java] CompletableFuture

Donghyun Kim·2023년 5월 31일
0

Java에서 멀티 쓰레드를 통한 병렬처리 방법은 Thread, Runnable, Callable, ForkJoinPool, Future 구현 및 Spring @Asnyc 어노테이션 사용 등 여러가지 구현 방법이 있습니다. 그중 Future의 단점 및 한계를 극복한 더 좋은 방법인 CompletableFuture에 대해 다룹니다.

@Async? CompletableFuture?

@Async같은 비동기 메소드를 사용할 때, Void형태를 사용한다면 문제가 되지 않는다. 하지만 return이 존재한다면 기존에는 Future나 ListenableFuture를 이용하여 해결했지만 JAVA 8버전 부터는 CompletableFuture를 제공하므로 이를 사용하는 방법을 정리한다.

CompletableFuture 클래스

CompletableFuture는 기존의 Future를 기반으로 외부에서 완료시킬 수 있어서 CompletableFuture라는 이름을 갖게 되었다. Future 외에도 CompletionStage 인터페이스도 구현하고 있는데, CompletionStage는 작업들을 중첩시키거나 완료 후 콜백을 위해 추가되었다. 예를 들어 Future에서는 불가능했던 "몇 초 이내에 응답이 안 오면 기본값을 반환한다." 와 같은 작업이 가능해진 것이다. 즉, Future의 진화된 형태로써 외부에서 작업을 완료시킬 수 있을 뿐만 아니라 콜백 등록 및 Future 조합 등이 가능하다는 것이다.

참고자료

https://mangkyu.tistory.com/263
https://diqmwl-programming.tistory.com/112

profile
"Hello World"

0개의 댓글