CompletableFuture 클래스는 Java 8에서 추가된 비동기 프로그래밍에 유용한 클래스입니다. CompletableFuture는 Future 인터페이스의 확장으로, 비동기식 계산을 지원하며, 결과를 반환하기 전에 블록하지 않는 것이 가능합니다. 또한 CompletableFuture는 비동기 작업을 체이닝하여 연결할 수 있으므로 매우 유용합니다.
CompletableFuture를 사용하여 비동기식으로 실행하려는 작업을 선언합니다. 그런 다음 CompletableFuture의 thenApply() 또는 thenAccept() 메서드를 사용하여 작업이 완료되면 결과를 처리합니다. 또한 thenCompose() 메서드를 사용하여 두 개의 CompletableFuture를 체인으로 연결하고 결과를 결합할 수 있습니다.
아래는 CompletableFuture를 사용하는 예제 코드입니다.
CompletableFuture<String> completableFuture = CompletableFuture.supplyAsync(() -> {
// 비동기 작업
return "result";
});
// 작업 완료 후 결과를 출력
completableFuture.thenAccept(result -> System.out.println(result));
// 작업 완료 후 결과를 가공하여 반환
CompletableFuture<Integer> anotherCompletableFuture = completableFuture.thenApply(result -> {
// 결과 처리
return result.length();
});
// 두 개의 CompletableFuture를 체인으로 연결하여 결과 결합
CompletableFuture<Integer> combinedCompletableFuture = completableFuture
.thenCompose(result -> CompletableFuture.supplyAsync(() -> {
// 또 다른 비동기 작업
return result.length();
}));
supplyAsync() 메서드는 지정된 함수를 비동기식으로 실행하고 CompletableFuture를 반환합니다. thenAccept() 메서드는 작업이 완료된 후 결과를 처리합니다. thenApply() 메서드는 작업이 완료된 후 결과를 가공하여 반환합니다. thenCompose() 메서드는 두 개의 CompletableFuture를 체인으로 연결하고 결과를 결합합니다.
CompletableFuture는 블록하지 않는 비동기 프로그래밍을 가능하게 하고, 작업을 체이닝하여 연결할 수 있습니다. 또한 CompletableFuture를 사용하여 비동기식으로 실행하는 작업을 간단하게 작성할 수 있습니다.
'java' 카테고리의 다른 글
Java 8에서 문자열 포맷팅 (1) | 2023.03.18 |
---|---|
Java의 Matcher를 활용한 정규식 검색 및 추출 (0) | 2023.03.06 |
Java Gradle Project에서 Unit Test코드 작성하기 (0) | 2023.03.06 |
Java Stream API (0) | 2023.03.04 |