ホームページ Java &#&チュートリアル CompletableFuture を使用して Java で非同期同時プログラミングを実装するにはどうすればよいですか?

CompletableFuture を使用して Java で非同期同時プログラミングを実装するにはどうすればよいですか?

May 04, 2024 pm 05:03 PM
java 非同期同時プログラミング

CompletableFuture を使用して Java で非同期同時プログラミングを実装します。 CompletableFuture を作成します。 CompletableFuture.supplyAsync() を通じて CompletableFuture を作成します。これは、パラメーターなしのメソッドをパラメーターとして受け取り、値を返します。完了状況の処理: whenComplete()、thenApply()、thenAccept()、Exceptionally()、および handle() メソッドを使用して、タスクの完了、例外、キャンセルの状況を処理します。 CompletableFuture の結合: thenCompose() メソッドを使用して 2 つの CompletableFuture を連結します。実践的なケース: CompletableFuture を使用してデータベースからユーザーのリストを並行して取得し、リモート API から各ユーザーの詳細を取得する方法を示します。

如何在 Java 中使用 CompletableFuture 实现异步并发编程?

#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));

実際的なケース

次のタスクがあるとします。並列実行が必要です:

  • データベースからユーザー リストを取得します
  • リモート API から各ユーザーの詳細を取得します

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 サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

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

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

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

Javaのデッドロックとは何ですか?どうすればそれを防ぐことができますか? Javaのデッドロックとは何ですか?どうすればそれを防ぐことができますか? Aug 23, 2025 pm 12:55 PM

adeadlockinjavaoccurswhentwoorthoreThreadsareblockededforever、それぞれの方向に、通常はdueTococularwaitcausedistentlockdoringを使用します

安全なコーディングのためのJava暗号化アーキテクチャ(JCA) 安全なコーディングのためのJava暗号化アーキテクチャ(JCA) Aug 23, 2025 pm 01:20 PM

プロバイダーメカニズムを介してアルゴリズムを実装するMessaged Gigest、Cipher、Keygenerator、Securerandom、Signature、KeystoreなどのJCAコアコンポーネントを理解します。 2. SHA-256/SHA-512、AES(256ビットキー、GCMモード)、RSA(2048ビット以上)、Securerandomなどの強力なアルゴリズムとパラメーターを使用します。 3.ハードコーディングされたキーを避け、キーストアを使用してキーを管理し、PBKDF2などの安全に派生したパスワードを介してキーを生成します。 4. ECBモードを無効にし、GCMなどの認証暗号化モードを採用し、各暗号化に一意のランダムIVを使用し、時間内に明確な敏感なモードを使用します

一般的なJava nullpointerexceptionの問題をオプションで解決します 一般的なJava nullpointerexceptionの問題をオプションで解決します Aug 31, 2025 am 07:11 AM

オプションは、Java 8によって導入されたコンテナクラスです。値が空である可能性があることを明確に示すために使用され、それによりnullpointerexceptionが回避されます。 2. MAP、Orelse、およびその他の方法を提供し、メソッドがnullの返却を防ぎ、収集の返品値を標準化することにより、ネストされたヌルチェックを簡素化します。 3.ベストプラクティスには、値のみの値のみが含まれ、フィールドまたはパラメーターの使用を回避し、orelsegtとolelsegetを区別し、get()を直接呼び出しません。 4.オプションは虐待されるべきではありません。空でない方法を包む必要がない場合、ストリームでは不必要なオプション操作を避ける必要があります。オプションを正しく使用すると、コードのセキュリティと読みやすさが大幅に向上する可能性がありますが、適切なプログラミング習慣が必要です。

Chromeでブックマークを編集します Chromeでブックマークを編集します Aug 27, 2025 am 12:03 AM

Chromeブックマークの編集はシンプルで実用的です。ユーザーは、ショートカットキーCTRL Shift O(Windows)またはCMD Shift O(MAC)を介してブックマークマネージャーを入力したり、ブラウザメニューから入力したりできます。 1.単一のブックマークを編集するときは、右クリックして「編集」を選択し、タイトルまたはURLを変更し、[完了]をクリックして保存します。 2.ブックマークをバッチで整理する場合、Ctrl(またはCMD)をブックマークマネージャーの複数選択ブックマークに保持できます。右クリックして、ターゲットフォルダーに「移動」または「コピー」を選択します。 3.ブックマークをエクスポートしてインポートするときは、「解決」ボタンをクリックして「ブックマークをエクスポート」するためにHTMLファイルとして保存し、必要に応じて「インポートブックマーク」機能を介して復元します。

閉じた後に保存しない笑ゲーム設定[修正] 閉じた後に保存しない笑ゲーム設定[修正] Aug 24, 2025 am 03:17 AM

IfLeagueofLegendssettingsaren’tsaving,trythesesteps:1.Runthegameasadministrator.2.GrantfullfolderpermissionstotheLeagueofLegendsdirectory.3.Editandensuregame.cfgisn’tread-only.4.Disablecloudsyncforthegamefolder.5.RepairthegameviatheRiotClient.

キーボードで動作しないキーを入力します キーボードで動作しないキーを入力します Aug 30, 2025 am 08:36 AM

まず、cehcecalissicalissues slikedebrisordamageandcleanthekeyboard withanexternalone;

「Javaは認識されていません」CMDのエラー[3つの簡単な手順] 「Javaは認識されていません」CMDのエラー[3つの簡単な手順] Aug 23, 2025 am 01:50 AM

ifjavaisnotcognizedincmd、sulesjavaisinstalled、setthejava_homevariabletothejdkpath、anddthejdk'sbinfoldetotheSystempath.restartcmdandrunjava-versiontoconfirm。

Javaのメモリリークとは何ですか? Javaのメモリリークとは何ですか? Aug 28, 2025 am 05:37 AM

AmemoryLeakinjavaoccurswhenununReachable objectsareNotgarbagecollecteddueTolingReferences、excessiveMemoryusageandofmemoryerror.commoncausesincludestaticCollection -retaininectainedededefine、commoncausesincludestaticcectainection coltained retainedectarecomestreamsorne

See all articles