Java9-completablefuture-api-improvements

提供:Dev Guides
移動先:案内検索

CompletableFuture APIの改善

CompletableFutureクラスは、値とステータスを明示的に設定することで完了することができるFutureを表すためにJava 8で導入されました。 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)

このメソッドは、指定されたタイムアウトの前に完了しない場合、このCompletableFutureを例外的にTimeoutExceptionで完了します。

サブクラス化のサポートの改善

public Executor defaultExecutor()

Executorを指定しない非同期メソッドに使用されるデフォルトのExecutorを返します。 このメソッドは、サブクラスでオーバーライドされて、Executorを返し、少なくとも1つの独立したスレッドを提供します。

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を返します。