Java 9 での非同期プログラミングと同時実行制御に CompletableFuture を使用する方法
CompletableFuture を使用して Java 9 で非同期プログラミングと同時実行制御を実装する方法
はじめに:
最新のアプリケーションにおける高性能と高同時実行の需要の高まりに伴い、非同期プログラミングと同時実行制御が一般的になってきました。開発上の問題。 Java 9 で導入された CompletableFuture クラスは、非同期操作を処理する強力なメカニズムを提供し、同時実行制御を実装するためのシンプルかつ洗練された方法を提供します。この記事では、Java 9 の CompletableFuture の基本概念を紹介し、CompletableFuture を使用して非同期プログラミングと同時実行制御を実装する方法を示すサンプル コードをいくつか紹介します。
1. CompletableFuture の概要
CompletableFuture は、Java 8 で導入された非同期プログラミング メカニズムの補足であり、Future インターフェイスと CompletionStage インターフェイスを実装するクラスです。 Future インターフェイスは、完了できない可能性のある非同期タスクの結果を表すために使用されます。一方、CompletionStage インターフェイスは、非同期で実行される可能性のある計算 (操作のトリガーと結果の返しを含む) および完了する可能性がある後続の操作を表すために使用されます。計算が完了した後にトリガーされます。 CompletableFuture クラスは、これらのインターフェイスを使用するための簡略化された方法を提供し、非同期操作を処理するためのより強力な機能を提供します。
2. 基本的な使用例
- CompletableFuture オブジェクトの作成
まず、非同期計算の結果を表す CompletableFuture オブジェクトを作成する必要があります。 CompletableFuture クラスは、completedFuture、supplyAsync など、そのようなオブジェクトを作成するためのさまざまな静的メソッドを提供します。以下はサンプル コードです。
CompletableFuture<String> future = CompletableFuture.completedFuture("Hello, CompletableFuture!");
上記のコードでは、completedFuture メソッドを使用して完成した CompletableFuture オブジェクトを作成し、それに計算結果として文字列を渡します。
- 非同期計算のトリガー
次に、非同期計算をトリガーし、前の手順で作成した CompletableFuture オブジェクトに関連付ける必要があります。 CompletableFuture クラスは、これを実現するための 2 つのメソッド、runAsync と SupplyAsync を提供します。前者は結果を返さない非同期操作を実行するために使用され、後者は結果を返す非同期操作を実行するために使用されます。以下はサンプル コードです。
CompletableFuture<Integer> future = CompletableFuture.supplyAsync(() -> { // 异步计算,返回一个整数结果 return 42; });
上記のコードでは、supplyAsync メソッドを使用して、整数の結果を返す非同期で実行される計算を作成します。
- 非同期計算結果の処理
非同期計算が完了したら、CompletableFuture オブジェクトのメソッドを呼び出して計算結果を処理できます。 CompletableFuture クラスは、thenApply、thenAccept など、結果を処理するためのさまざまなメソッドを提供します。以下はサンプル コードです。
CompletableFuture<Integer> future = CompletableFuture.supplyAsync(() -> { // 异步计算,返回一个整数结果 return 42; }); future.thenApply(result -> { // 处理结果并返回一个新的结果 return result * 2; }) .thenAccept(result -> { // 处理最终结果 System.out.println("Final result: " + result); });
上記のコードでは、非同期計算の完了後に thenApply メソッドを呼び出して結果を処理し、新しい結果を返します。次に、thenAccept メソッドを呼び出して最終結果を処理し、出力します。
3. 同時実行制御の例
非同期プログラミングに加えて、CompletableFuture は同時実行制御を実装するためのメソッドもいくつか提供します。最も一般的に使用されるメソッドには、anyOf、allOf、join などがあります。
- anyOf メソッド
anyOf メソッドは、複数の CompletableFuture のいずれかが完了するのを待機するために使用されます。最初に完了した CompletableFuture オブジェクトの結果として評価される新しい CompletableFuture オブジェクトを返します。以下はサンプル コードです。
CompletableFuture<Integer> future1 = CompletableFuture.supplyAsync(() -> { // 异步计算1 return 1; }); CompletableFuture<Integer> future2 = CompletableFuture.supplyAsync(() -> { // 异步计算2 return 2; }); CompletableFuture<Object> resultFuture = CompletableFuture.anyOf(future1, future2); resultFuture.thenAccept(result -> { System.out.println("First result: " + result); });
上記のコードでは、anyOf メソッドを使用して、future1 または future2 のいずれかが計算され、結果が出力されるまで待機します。
- allOf メソッド
allOf メソッドは、複数の CompletableFuture のすべての計算が完了するのを待つために使用されます。これは、Void 値 (null) に評価される新しい CompletableFuture オブジェクトを返します。サンプル コードは次のとおりです。
CompletableFuture<Integer> future1 = CompletableFuture.supplyAsync(() -> { // 异步计算1 return 1; }); CompletableFuture<Integer> future2 = CompletableFuture.supplyAsync(() -> { // 异步计算2 return 2; }); CompletableFuture<Void> resultFuture = CompletableFuture.allOf(future1, future2); resultFuture.thenRun(() -> { System.out.println("All calculations are completed."); });
上記のコードでは、allOf メソッドを使用して、future1 と future2 のすべての計算が完了するまで待機し、完了メッセージを出力します。
- join メソッド
join メソッドは、CompletableFuture の計算結果を待って結果を返すために使用されます。計算中に例外が発生した場合、例外がスローされます。以下はサンプル コードです。
CompletableFuture<Integer> future = CompletableFuture.supplyAsync(() -> { // 异步计算,返回一个整数结果 return 42; }); int result = future.join(); System.out.println("Result: " + result);
上記のコードでは、join メソッドを使用して将来の計算が完了するのを待ち、その結果を取得します。
概要:
この記事では、Java 9 の CompletableFuture の基本概念を紹介し、CompletableFuture を使用して非同期プログラミングと同時実行制御を実装する方法を示すサンプル コードをいくつか示します。 CompletableFuture を使用することで、非同期操作をシンプルかつエレガントな方法で処理し、同時計算の柔軟な制御を実現できます。これらの例が CompletableFuture の理解と使用に役立つことを願っています。
以上がJava 9 での非同期プログラミングと同時実行制御に CompletableFuture を使用する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









Java の乱数ジェネレーターのガイド。ここでは、Java の関数について例を挙げて説明し、2 つの異なるジェネレーターについて例を挙げて説明します。

Java の Weka へのガイド。ここでは、weka java の概要、使い方、プラットフォームの種類、利点について例を交えて説明します。

この記事では、Java Spring の面接で最もよく聞かれる質問とその詳細な回答をまとめました。面接を突破できるように。

Java 8は、Stream APIを導入し、データ収集を処理する強力で表現力のある方法を提供します。ただし、ストリームを使用する際の一般的な質問は次のとおりです。 従来のループにより、早期の中断やリターンが可能になりますが、StreamのForeachメソッドはこの方法を直接サポートしていません。この記事では、理由を説明し、ストリーム処理システムに早期終了を実装するための代替方法を調査します。 さらに読み取り:JavaストリームAPIの改善 ストリームを理解してください Foreachメソッドは、ストリーム内の各要素で1つの操作を実行する端末操作です。その設計意図はです

Java での日付までのタイムスタンプに関するガイド。ここでは、Java でタイムスタンプを日付に変換する方法とその概要について、例とともに説明します。
