Cải tiến API CompletableFuture
Lớp CompletableFuture được giới thiệu trong Java 8 để đại diện cho Tương lai có thể được hoàn thành bằng cách đặt giá trị và trạng thái rõ ràng của nó. Nó có thể được sử dụng như java.util.concurrent.CompletionStage. Nó hỗ trợ các chức năng và hành động phụ thuộc được kích hoạt khi hoàn thành trong tương lai. Trong java 9, API CompletableFuture đã được cải tiến hơn nữa. Sau đây là những thay đổi liên quan được thực hiện đối với API.
- Hỗ trợ cho sự chậm trễ và hết thời gian.
- Cải thiện hỗ trợ cho phân lớp.
- Các phương pháp nhà máy mới được thêm vào.
Hỗ trợ cho sự chậm trễ và hết thời gian
public CompletableFuture<T> completeOnTimeout(T value, long timeout, TimeUnit unit)
Phương thức này hoàn thành CompletableFuture này với giá trị đã cho nếu không hoàn thành trước thời gian chờ đã cho.
public CompletableFuture<T> orTimeout(long timeout, TimeUnit unit)
Phương pháp này đặc biệt hoàn thành CompletableFuture này với một TimeoutException nếu không hoàn thành trước thời gian chờ đã cho.
Cải thiện hỗ trợ cho phân lớp con
public Executor defaultExecutor()
Nó trả về Executor mặc định được sử dụng cho các phương thức không đồng bộ không chỉ định Executor. Phương thức này có thể được ghi đè trong các lớp con để trả về một Người thực thi để cung cấp tối thiểu một luồng độc lập.
public <U> CompletableFuture<U> newIncompleteFuture()
Trả về một CompletableFuture chưa hoàn thành mới của loại được trả về bởi một phương thức CompletionStage. Các lớp con của lớp CompletableFuture nên ghi đè phương thức này để trả về một thể hiện của cùng một lớp với lớp CompletableFuture này. Việc triển khai mặc định trả về một thể hiện của lớp CompletableFuture.
Phương pháp nhà máy mới
public static <U> CompletableFuture<U> completedFuture(U value)
Phương thức factory này trả về một CompletableFuture mới đã được hoàn thành với giá trị đã cho.
public static <U> CompletionStage<U> completedStage(U value)
Phương thức gốc này trả về một CompletionStage mới đã được hoàn thành với giá trị đã cho và chỉ hỗ trợ những phương thức có trong giao diện CompletionStage.
public static <U> CompletionStage<U> failedStage(Throwable ex)
Phương thức gốc này trả về một CompletionStage mới đã được hoàn thành đặc biệt với ngoại lệ đã cho và chỉ hỗ trợ những phương thức có trong giao diện CompletionStage.