CompletableFuture API dùng cho lập trình bất đồng bộ (asynchronous programming) trong Java. Nghĩa là viết code không chặn (non-blocking) bằng cách chạy task trên luồng riêng biệt so với luồng main() và thông báo cho luồng main() về tiến độ, hoàn thành hoặc thất bại. Java 9 giới thiệu một vài cải tiến trong CompletableFuture API: "Hỗ trợ timeout và delay", "Cải tiến hỗ trợ subclassing" và "Thêm factory methods mới".
Hỗ trợ timeout và delay
public CompletableFuture<T> orTimeout(long timeout, TimeUnit unit)
Chỉ định nếu task không hoàn thành trong thời gian nhất định, chương trình dừng và ném TimeoutException.
public CompletableFuture<T> completeOnTimeout(T value, long timeout, TimeUnit unit)
Hoàn thành CompletableFuture với giá trị cung cấp. Nếu không, hoàn thành trước timeout cho trước.
Cải tiến hỗ trợ subclassing
public Executor defaultExecutor()
Trả về default executor dùng cho async methods không chỉ định Executor. Có thể override trong subclass để trả về Executor cung cấp ít nhất một luồng độc lập (independent thread).
public <U> CompletableFuture<U> newIncompleteFuture()
Trả về CompletableFuture chưa hoàn thành mới của đặc tả được trả về bởi phương thức CompletionStage.
Factory Methods mới
public static <U> CompletableFuture<U> completedFuture(U value)
Trả về CompletableFuture mới đã hoàn thành với giá trị cung cấp.
public static <U> CompletionStage<U> completedStage(U value)
Trả về CompletionStage mới đã hoàn thành trước với giá trị cung cấp, chỉ tương thích với các phương thức có sẵn trong interface CompletionStage.