Future と CompletableFuture は、Java の同時実行性とマルチスレッド化のためのツールです。 Future は非同期計算結果を表し、結果を取得するスレッドをブロックする get() メソッドを提供します。 CompletableFuture は Future を拡張して、計算の結合、例外の処理、コールバック関数の使用など、より豊富な機能を提供します。
#Java 関数の同時実行性とマルチスレッド: Future と CompletableFuture の使用
#概要Future と CompletableFuture は、非同期操作と同時タスクを処理するために Java 8 で導入された同時実行ツールです。これにより、メインスレッドをブロックすることなく、長時間実行される操作を実行できるようになり、アプリケーションのパフォーマンスと応答性が向上します。
Future
Future は、非同期計算の結果を表すオブジェクトです。結果が得られるまで現在のスレッドをブロックするメソッド get()
を提供します。isDone() メソッドを使用して、計算が完了したかどうかを確認することもできます。
CompletableFuture
CompletableFuture は Future の拡張機能であり、より豊富な機能を提供します。これにより、非同期計算の作成、例外の処理、コールバック関数の使用が可能になります。
実際的なケース
Future
を使用してファイルを非同期的にロードする次の例を考えてみましょう:import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.concurrent.Future; public class FileLoader { public static void main(String[] args) { ExecutorService executorService = Executors.newSingleThreadExecutor(); Future<String> future = executorService.submit(() -> { // 异步加载文件 return loadFile("file.txt"); }); // 继续执行其他任务,而不阻塞当前线程 // ... // 当需要结果时,再阻塞主线程获取结果 String result = future.get(); } private static String loadFile(String filePath) { // 模拟文件加载操作 return "File contents"; } }
この例では、
ExecutorService を使用してスレッド プールを作成し、submit() を使用してファイルのロードを担当する非同期タスクを送信します。メインスレッドは、ファイルがロードされるまでの待機をブロックすることなく、他のタスクを実行し続けます。最後に、ファイルのコンテンツが必要な場合は、
get() を呼び出して
Future から結果を取得します。
CompletableFuture の使用
次の例は、CompletableFuture
を使用して非同期計算を作成する方法を示しています。import java.util.concurrent.CompletableFuture; public class CompletableFutureExample { public static void main(String[] args) { // 定义第一个异步计算 CompletableFuture<Integer> firstResult = CompletableFuture.supplyAsync(() -> { // 计算第一个结果 return 5; }); // 定义第二个异步计算 CompletableFuture<Integer> secondResult = CompletableFuture.supplyAsync(() -> { // 计算第二个结果 return 10; }); // 组合两个计算,将它们的结果相加 CompletableFuture<Integer> combinedResult = firstResult.thenCombine(secondResult, (x, y) -> x + y); // 获取最终结果 int result = combinedResult.get(); } }
この例では、
CompletableFuture#supplyAsync() を使用して 2 つの非同期計算を作成します。次に、CompletableFuture#thenCombine() を使用してそれらを結合し、その結果を追加します。最後に、
CompletableFuture#get() を使用して最終結果を取得します。
つまり、Future と CompletableFuture は、非同期操作と同時タスクを処理するための強力なツールです。これらのツールを使用してアプリケーションのパフォーマンスと応答性を向上させ、より効率的でスケーラブルなコードを作成します。
以上がJava 関数の同時実行性とマルチスレッドで Future と CompletableFuture を使用する方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。