Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- 스프링 배치
- Spring Boot Actuator
- 디자인패턴
- 키클락
- java 정렬
- JPA
- 사가 패턴
- 배치
- saga pattern
- spring batch
- 타입스크립트
- 체인 패턴
- Transaction Pattern
- thread
- Java
- 알고리즘
- Parallel Old GC
- Serial GC
- 생산자 소비자 패턴
- The law of Demeter
- MSA
- 디자인 패턴
- spring cloud
- 멀티스레드
- zipkin
- TypeScript
- Spring Cloud Netfilx Eureka
- Action Pattern
- Resilinece4j
- 스레드
Archives
- Today
- Total
PSD( Private-Self-Development )
CompletableFuture 본문
Future 의 단점 및 한계
- 결과를 얻으려면 블로킹 방식으로 대기해야 한다
- 외부에서 완료 시킬 수 없다
- 여러 Future를 조합할 수 없다.
- 여러 작업을 조합하거나 예외처리 할 수 없다.
이와 같은 Future 의 단점을 보완 하기 위해
JAVA 8 에 추가된 CompletableFuture 을 알아보자
CompletableFuture
- Future 를 기반으로 외부에서 완료시킬 수 있도록 변경된 클래스
- 작업들을 중첩시키거나 콜백 함수 추가 가능하다.
비동기 작업 실행
- runAsync
- 반환값이 없는 경우
- 비동기로 작업 실행 콜
- supplyAsync
- 반환값이 있는 경우
- 비동기로 작업 실행 콜
작업 콜백
- thenApply
- 반환 값을 받아서 다른 값을 반환함
- 함수형 인터페이스 Function을 파라미터로 받음
- thenAccpet
- 반환 값을 받아 처리하고 값을 반환하지 않음
- 함수형 인터페이스 Consumer를 파라미터로 받음
- thenRun
- 반환 값을 받지 않고 다른 작업을 실행함
- 함수형 인터페이스 Runnable을 파라미터로 받음
작업 조합
- thenCompose
- 두 작업이 이어서 실행하도록 조합, 앞선 작업의 결과를 받아서 사용 가능
- 함수형 인터페이스 Function을 파라미터로 받음
- thenCombine
- 두 작업을 독립적으로 실행하고, 둘 다 완료되었을 때 콜백을 실행
- 함수형 인터페이스 Function을 파라미터로 받음
- allOf
- 여러 작업들을 동시에 실행하고, 모든 작업 결과에 콜백을 실행
- anyOf
- 여러 작업들 중에서 가장 빨리 끝난 하나의 결과에 콜백을 실행
예외 처리
- exeptionally
- 발생한 에러를 받아서 예외를 처리
- 함수형 인터페이스 Function을 파라미터로 받음
- handle, handleAsync
- (결과값, 에러)를 반환받아 에러가 발생한 경우와 아닌 경우 모두를 처리할 수 있음
- 함수형 인터페이스 BiFunction을 파라미터로 받음
참조
'Backend > Thread' 카테고리의 다른 글
생산자 소비자 패턴 (2) | 2024.08.28 |
---|---|
BlockingQueue 와 DelayQueue (0) | 2024.08.26 |
Callable, Future, Executors, Executor, ExecutorService, ScheduledExecutorService (0) | 2023.07.12 |
Thread 와 Runnable (0) | 2023.07.11 |
Thread 란? (0) | 2022.11.15 |