CompletableFuture API 개선
CompletableFuture 클래스는 값과 상태를 명시 적으로 설정하여 완료 할 수있는 Future를 나타 내기 위해 Java 8에 도입되었습니다. java.util.concurrent.CompletionStage로 사용할 수 있습니다. 미래의 완료시 트리거 된 종속 기능과 동작을 지원합니다. Java 9에서 CompletableFuture API가 더욱 향상되었습니다. 다음은 API에 대한 관련 변경 사항입니다.
- 지연 및 시간 초과 지원.
- 서브 클래 싱 지원이 향상되었습니다.
- 새로운 공장 방법이 추가되었습니다.
지연 및 시간 초과 지원
public CompletableFuture<T> completeOnTimeout(T value, long timeout, TimeUnit unit)
이 메서드는 지정된 시간 초과 전에 완료되지 않은 경우 지정된 값으로이 CompletableFuture를 완료합니다.
public CompletableFuture<T> orTimeout(long timeout, TimeUnit unit)
이 메소드는 지정된 제한 시간 전에 완료되지 않은 경우 TimeoutException으로이 CompletableFuture를 예외적으로 완료합니다.
서브 클래 싱 지원 개선
public Executor defaultExecutor()
Executor를 지정하지 않는 비동기 메서드에 사용되는 기본 Executor를 반환합니다. 이 메서드는 최소한 하나의 독립 스레드를 제공하는 Executor를 반환하기 위해 서브 클래스에서 재정의 될 수 있습니다.
public <U> CompletableFuture<U> newIncompleteFuture()
CompletionStage 메서드에서 반환 할 형식의 새로운 불완전 CompletableFuture를 반환합니다. CompletableFuture 클래스의 하위 클래스는이 CompletableFuture와 동일한 클래스의 인스턴스를 반환하도록이 메서드를 재정의해야합니다. 기본 구현은 CompletableFuture 클래스의 인스턴스를 반환합니다.
새로운 공장 방법
public static <U> CompletableFuture<U> completedFuture(U value)
이 팩토리 메서드는 주어진 값으로 이미 완료된 새로운 CompletableFuture를 반환합니다.
public static <U> CompletionStage<U> completedStage(U value)
이 팩토리 메서드는 주어진 값으로 이미 완료된 새 CompletionStage를 반환하고 CompletionStage 인터페이스에있는 메서드 만 지원합니다.
public static <U> CompletionStage<U> failedStage(Throwable ex)
이 팩토리 메소드는 주어진 예외로 이미 예외적으로 완료된 새로운 CompletionStage를 반환하고 인터페이스 CompletionStage에있는 메소드 만 지원합니다.