CompletableFuture()
나중에 결과가 나오는 비동기 작업
future : 결과를 나중에 받는다.
Completion: 결과가 나오면 이어서 다른 작업을 실행할수 있다.
특징
1. 직접 완료시킬수 있음
future.complete("결과")
일반 future는 결과를 기다린다면 결과를 직접 넣을수 있음
2. 여러 스레드가 동시에 완료하려고 해도 하나만 성공한다.
race condition을 방지한다.
3. 작업 이어붙이기가 가능하다.
결과가 나오면 자동으로 다음 작업이 실행된다.
4. async vs non-async
thenApply() : 현재 작업을 끝낸 스레드가 이어서 실행할 수 있음
thenApplyAsync(): 다른 스레드에서 실행됨
5. 기본 스레드 풀
ForkJoinPool.commonPool(): 별도 설정 안하면 여기서 돌아감
근데 이거 몰빵하면 병목생김
6. cancel: 실패 처리
cancel은 예외로 끝난것처럼 처리됨
7. 예외 처리방식
.get() 예외발생시 executionException으로 감싸서 던짐
.join() 예외 발생했을때 바로 CompletionException 던짐
출처:
https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CompletableFuture.html
'【Java】' 카테고리의 다른 글
| try-with-resources (0) | 2026.03.18 |
|---|---|
| throw new NotFoundShortenUrlException() 분해 (0) | 2026.03.17 |
| Object .toString() (0) | 2025.08.27 |
| [JAVA] whlie문 밖에 또는 안에 무한루프의 궤도 (1) | 2025.08.19 |
| [JAVA] 기본 생성자가 없을때 발생하는 java.lang.IllegalStateException: (1) | 2025.08.14 |