CompletableFuture を使用して Java で非同期同時プログラミングを実装します。 CompletableFuture を作成します。 CompletableFuture.supplyAsync() を通じて CompletableFuture を作成します。これは、パラメーターなしのメソッドをパラメーターとして受け取り、値を返します。完了状況の処理: whenComplete()、thenApply()、thenAccept()、Exceptionally()、および handle() メソッドを使用して、タスクの完了、例外、キャンセルの状況を処理します。 CompletableFuture の結合: thenCompose() メソッドを使用して 2 つの CompletableFuture を連結します。実践的なケース: CompletableFuture を使用してデータベースからユーザーのリストを並行して取得し、リモート API から各ユーザーの詳細を取得する方法を示します。
#CompletableFuture を使用して Java で非同期同時プログラミングを実装するにはどうすればよいですか?
はじめに
CompletableFuture は、Java 8 で導入された同時実行ユーティリティ クラスで、タスクを非同期に実行し、その完了を処理できるようにします。従来のスレッドよりもエレガントで簡素化された同時実行性の管理方法を提供します。
基本的な使用法
CompletableFuture を作成するには、Supplier をパラメーターとして受け入れる CompletableFuture.supplyAsync() メソッドを使用できます。 Supplier はパラメータを持たないメソッドであり、値を返します。
CompletableFuture<String> future = CompletableFuture.supplyAsync(() -> "Hello");
完了の処理
CompletableFuture の主な機能の 1 つは、タスクの完了を処理する機能です。完了、例外、およびキャンセルの状況を処理するためのさまざまなメソッドが提供されます。
whenComplete()
: タスクが完了したかどうかに関係なく、タスクの完了後に指定されたアクションを実行します。成功したかどうか。 thenApply()
: 指定された関数を実行し、タスクが正常に完了した後に新しい値を返します。 thenAccept()
: タスクが正常に完了した後、指定されたコンシューマを実行します。 Exceptionally()
: タスクが失敗した後に指定された例外ハンドラーを実行し、新しい値を返します。 handle()
: タスクが正常に完了したかどうかに関係なく、タスクの完了後に指定された関数を実行し、新しい値を返します。 CompletableFuture の結合
CompletableFuture を結合して、より複雑な並列タスクを作成できます。たとえば、thenCompose()
メソッドを使用して 2 つの CompletableFuture を連結できます。
CompletableFuture<Integer> future1 = CompletableFuture.supplyAsync(() -> 1); CompletableFuture<Integer> future2 = CompletableFuture.supplyAsync(() -> 2); future1.thenCompose(x -> future2.thenApply(y -> x + y));
実際的なケース
次のタスクがあるとします。並列実行が必要です:
CompletableFuture を使用できます実装するには:
CompletableFuture<List<User>> futureUsers = CompletableFuture.supplyAsync(() -> getUsersFromDatabase()); CompletableFuture<Map<Integer, UserDetail>> futureDetails = CompletableFuture.supplyAsync(() -> { List<User> users = futureUsers.get(); return getUsersDetailsFromApi(users); }); CompletableFuture<List<User>> combinedFuture = futureUsers.thenCombine(futureDetails, (users, details) -> { for (User user : users) { user.setDetails(details.get(user.getId())); } return users; });
この例では、CompletableFuture を使用して、さまざまなソースから並行してデータをフェッチし、それらを結合する方法を示します。
以上がCompletableFuture を使用して Java で非同期同時プログラミングを実装するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。