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