Java 教程
Java 8 引入了 CompletableFuture<T> 類,可能是 java.util.concurrent.Future<T> 明確的完成版(設(shè)置了它的值和狀態(tài)),也可能被用作java.util.concurrent.CompleteStage 。支持 future 完成時觸發(fā)一些依賴的函數(shù)和動作。Java 9 引入了一些CompletableFuture 的改進:
Java 9 對 CompletableFuture 做了改進:
public CompletableFuture<T> completeOnTimeout(T value, long timeout, TimeUnit unit)
在 timeout(單位在 java.util.concurrent.Timeunits units 中,比如 MILLISECONDS )前以給定的 value 完成這個 CompletableFutrue。返回這個 CompletableFutrue。
public CompletableFuture<T> orTimeout(long timeout, TimeUnit unit)
如果沒有在給定的 timeout 內(nèi)完成,就以 java.util.concurrent.TimeoutException 完成這個 CompletableFutrue,并返回這個 CompletableFutrue。
做了許多改進使得 CompletableFuture 可以被更簡單的繼承。比如,你也許想重寫新的 public Executor defaultExecutor() 方法來代替默認的 executor。
另一個新的使子類化更容易的方法是:
public <U> CompletableFuture<U> newIncompleteFuture()
Java 8引入了 <U> CompletableFuture<U> completedFuture(U value) 工廠方法來返回一個已經(jīng)以給定 value 完成了的 CompletableFuture。Java 9以 一個新的 <U> CompletableFuture<U> failedFuture(Throwable ex) 來補充了這個方法,可以返回一個以給定異常完成的 CompletableFuture。
除此以外,Java 9 引入了下面這對 stage-oriented 工廠方法,返回完成的或異常完成的 completion stages: