CompletableFuture API の改善
CompletableFuture クラスは Java 8 で導入され、値とステータスを明示的に設定することで完了することができる Future を表します。 java.util.concurrent.CompletionStage として使用できます。フューチャーの完了時にトリガーされる依存関数とアクションをサポートします。 Java 9 では、CompletableFuture API がさらに強化されました。以下は、API に対して行われた関連する変更です。
- 遅延とタイムアウトのサポート
- サブクラス化のサポートが改善されました。
- 新しいファクトリ メソッドが追加されました。
遅延とタイムアウトのサポート
public CompletableFuture<T> completeOnTimeout(T value, long timeout, TimeUnit unit)
このメソッドは、指定されたタイムアウトまでに完了しない場合、指定された値でこの CompletableFuture を完了します。
public CompletableFuture<T> orTimeout(long timeout, TimeUnit unit)
このメソッドは、指定されたタイムアウト前に完了しない場合、例外的に TimeoutException でこの CompletableFuture を完了します。
サブクラス化のサポートの改善
public Executor defaultExecutor()
Executor を指定しない非同期メソッドに使用されるデフォルトの Executor を返します。このメソッドは、少なくとも 1 つの独立したスレッドを提供する Executor を返すようにサブクラスでオーバーライドされる場合があります。
public <U> CompletableFuture<U> newIncompleteFuture()
CompletionStage メソッドによって返される型の新しい不完全な CompletableFuture を返します。 CompletableFuture クラスのサブクラスは、このメソッドをオーバーライドして、この CompletableFuture と同じクラスのインスタンスを返す必要があります。デフォルトの実装は、クラス CompletableFuture のインスタンスを返します。
新しいファクトリ メソッド
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 は、指定された例外で例外的に既に完了しており、インターフェイス CompletionStage に存在するメソッドのみをサポートします。
Java