Java9 CompletableFuture API
CompletableFuture
類是在Java 8中引入的,可以通過設置其值和狀態顯式來完成。 它可以用作java.util.concurrent.CompletionStage
。 它支持未來完成時觸發的相關函數和操作。 在Java 9中,CompletableFuture API進一步得到了增強。 以下是對API進行的相關更改。
- 支持延遲和超時。
- 改進了對子類的支持。
- 添加了新的工廠方法。
1. 支持延遲和超時
public CompletableFuture<T> completeOnTimeout(T value, long timeout, TimeUnit unit)
如果在給定超時之前未完成,則此方法使用給定值完成CompletableFuture
。
public CompletableFuture<T> orTimeout(long timeout, TimeUnit unit)
如果在給定的超時之前沒有完成,則此方法異常地完成此CompletableFuture
並帶有TimeoutException
異常。
2. 改進了對子類的支持
public Executor defaultExecutor()
它將返回用於未指定Executor
異步方法的默認Executor
。 可以在子類中重寫此方法以返回Executor
以提供一個最小的獨立線程。
public <U> CompletableFuture<U> newIncompleteFuture()
返回由CompletionStage
方法返回類型的新不完整CompletableFuture
。 CompletableFuture
類的子類應該重寫此方法以返回與CompletableFuture
相同的類的實例。 默認實現返回CompletableFuture
類的一個實例。
3. 新工廠方法
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
接口中存在的那些方法。