Java 9 の改善された CompletableFuture API
Java 8 で導入されたCompletableFuture<T>クラス、それはjava.util.concurrent.Future<T>明示的に完了したバージョン(その値と状態が設定されている)である場合もあり、また ... として使用される場合もありますjava.util.concurrent.CompleteStage。future の完了時に、依存するいくつかの関数やアクションをトリガーすることをサポートします。Java 9 により導入されたいくつかのCompletableFuture改善:
Java 9 はCompletableFuture改善を行いました:
- delays と timeouts のサポート
- サブクラス化のサポートの向上
- 新しいファクトリメソッド
delays と timeouts のサポート
public CompletableFuture<T> completeOnTimeout(T value, long timeout, TimeUnit unit)
にtimeout(単位は TimeUnitjava.util.concurrent.Timeunits units内、例えば MILLISECONDS)前に、指定された value でこの CompletableFuture を完了します。この CompletableFuture を返します。
public CompletableFuture<T> orTimeout(long timeout, TimeUnit unit)
指定された timeout 内に完了しない場合は、java.util.concurrent.TimeoutException でこの CompletableFuture を完了し、この CompletableFuture を返します。
サブクラス化のサポートを強化
多くの改善を行い、CompletableFutureより簡単に継承できます。例えば、新しいpublic Executor defaultExecutor()メソッドをオーバーライドして、既定のものの代わりにするexecutor。
サブクラス化をより簡単にするもう一つの新しいメソッドは次のとおりです:
public <U> CompletableFuture<U> newIncompleteFuture()
新しいファクトリメソッド
Java 8 で導入された<U> CompletableFuture<U> completedFuture(U value)指定された value で既に完了したものを返すファクトリメソッドCompletableFuture。Java 9 は新しい<U> CompletableFuture<U> failedFuture(Throwable ex)メソッドでこのメソッドを補完し、指定された例外で完了したものを返すことができます。CompletableFuture。
これ以外にも、Java 9 は、完了したまたは例外で完了した completion stages を返す、次のステージ指向のファクトリメソッドのペアを導入しました:
- <U> CompletionStage<U> completedStage(U value):指定された value で完了した新しいものを返しますCompletionStage、そして ... のみをサポートしますCompletionStage内のインターフェース。
- <U> CompletionStage<U> failedStage(Throwable ex):指定された例外で完了した新しいものを返しますCompletionStage、そして ... のみをサポートしますCompletionStage内のインターフェース。
Java 9 の新機能