Java 9 CompletableFuture API改善:遅延・タイムアウト・サブクラス対応・新ファクトリ
CompletableFutureクラスはJava 8で導入され、値とステータスを明示的に設定して完了できるFutureを表します。java.util.concurrent.CompletionStageとして使用でき、依存関数とアクションをサポートし、Future完了時にトリガーされます。Java 9ではCompletableFuture 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を返せます。
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インターフェースに存在するメソッドのみサポート。
Java
- 設備信頼性向上のブループリント:構造化5ステッププラン
- アレゲニー・パワー、ウェストバージニア州の信頼性向上に1億5600万ドルを投資
- 堅牢なAPIでCMMS機能を拡張:ERP、会計、IoTと連携
- GY-91モジュールでRaspberry Pi上に堅牢な温度・センサーAPIを構築
- 暗号ハードウェア性能を飛躍させる6つの鍵となるイノベーション
- Java 9(JDK 9)の主要機能とメリット
- Java 9プロセスAPIの改善:ProcessHandleで詳細情報取得
- Java 9ストリームAPI拡張:takeWhile、dropWhile、iterate、ofNullable
- Java 9のOptionalクラス新機能:stream()、ifPresentOrElse()、or()
- Java 9マルチ解像度イメージAPI:レスポンシブグラフィックスを簡素化
- Java 9 CompletableFuture API改善:遅延・タイムアウト・サブクラス対応・新ファクトリ