ホームページ > バックエンド開発 > PHPチュートリアル > Java バックエンド開発: Java CompletableFuture を使用した API 非同期プログラミング

Java バックエンド開発: Java CompletableFuture を使用した API 非同期プログラミング

王林
リリース: 2023-06-17 09:30:01
オリジナル
1631 人が閲覧しました

Java は、デスクトップ アプリケーションの開発からエンタープライズ レベルの Web アプリケーションまで、幅広い用途で使用される人気のあるプログラミング言語です。 Web 開発では、プログラムのパフォーマンスを向上させ、ユーザーの待ち時間を短縮するため、非同期プログラミングの重要性がますます高まっています。この記事では、Java バックエンド開発における API 非同期プログラミングに Java CompletableFuture を使用する方法を紹介します。

Java CompletableFuture とは何ですか?

Java CompletableFuture は Java8 の新しい API で、タスクを非同期に実行できる Future 拡張機能です。これは、Java 開発者が並列プログラミングと非同期プログラミングを簡単に実装するのに役立ち、従来の Java Future API よりも簡潔で柔軟で使いやすいものです。

Java CompletableFuture では、コールバック関数 (Callback) またはチェーン呼び出し (Chaining) を使用して非同期操作を整理できます。このプログラミング方法を使用すると、ネストを形成せずに複数の非同期操作を簡単に組み合わせることができるため、コードがより簡潔で理解しやすくなります。

なぜ非同期プログラミングに Java CompletableFuture を使用するのでしょうか?

Java バックエンド開発において、非同期プログラミングに Java CompletableFuture を使用する利点は明らかです。 Java CompletableFuture はマルチコア CPU を最大限に活用できるため、プログラムのパフォーマンスを向上させることができます。従来の Future API を使用してマルチスレッド アプリケーションを作成する場合、手動でスレッド プールを作成し、スレッド プール内のスレッドを管理する必要があるため、コードが非常に複雑になり、エラーが発生しやすくなります。 Java CompletableFuture は、スレッド プールを自動的に管理することでこの問題を解決し、コードをよりシンプルかつ保守しやすくします。

Java CompletableFuture は、ユーザーの待ち時間を短縮することもできます。従来の同期プログラミングでは、操作が呼び出されるとき、プログラムは操作が完了するまで待ってから続行します。これにより、多数のリクエストを処理するときにユーザーの待ち時間が長くなる可能性があります。ただし、Java CompletableFuture を使用すると操作を非同期に実行できるため、プログラムはすぐに戻って他のリクエストの処理を続行できるため、ユーザーの待ち時間が短縮されます。

API 非同期プログラミングに Java CompletableFuture を使用する手順

次に、API 非同期プログラミングに Java CompletableFuture を使用する方法を見てみましょう:

ステップ 1: 非同期操作を定義する

Java CompletableFuture の静的メソッド SupplyAsync および runAsync を使用して、非同期操作を定義できます:

  • supplyAsync メソッドを使用して、戻り値を伴う非同期操作を実行できます。 Supplier パラメータを返し、CompletableFuture オブジェクトを返します。
  • runAsync メソッドは、戻り値なしで非同期操作を実行するために使用できます。このメソッドは、Runnable パラメーターを受け取り、CompletableFuture オブジェクトを返します。

たとえば、次は、supplyAsync メソッドを使用して定義された非同期操作です:

CompletableFuture<String> future = CompletableFuture.supplyAsync(() -> {
    // 执行异步操作
    return "异步操作结果";
});
ログイン後にコピー

ステップ 2: コールバック関数を定義します

Java CompletableFuture の thenApply を使用できます。 , thenAccept メソッドと thenRun メソッドはコールバック関数を定義します:

  • ThethenApply メソッドは、非同期操作の結果を変換するために使用されます。このメソッドは Function パラメーターを受け取り、新しい CompletableFuture オブジェクトを返します。
  • ThethenAccept メソッドは、非同期操作の結果を消費するために使用されます。このメソッドは Consumer パラメータを受け取り、新しい CompletableFuture オブジェクトを返します。
  • ThethenRun メソッドは、非同期操作の出力を受け入れません。Runnable タスクを実行し、非同期操作の完了後に新しい CompletableFuture オブジェクトを返すだけです。

たとえば、コールバック関数を定義する例を次に示します。

CompletableFuture<String> future = CompletableFuture.supplyAsync(() -> {
    // 执行异步操作
    return "异步操作结果";
});

CompletableFuture thenFuture = future.thenAccept(result -> {
    // 在异步操作完成后执行的操作
    System.out.println("异步操作结果为:" + result);
});
ログイン後にコピー

ステップ 3: 非同期操作を結合する

Java CompletableFuture の thenCompose、thenCombine を使用できます。 allOf メソッドは非同期操作を組み合わせます:

  • thenCompose メソッドは、非同期操作の結果を別の非同期操作に渡すために使用されます。このメソッドは Function パラメーターを受け取り、新しい CompletableFuture オブジェクトを返します。
  • thenCombine メソッドは、2 つの非同期操作の結果を結合するために使用されます。このメソッドは BiFunction パラメータを受け取り、新しい CompletableFuture オブジェクトを返します。
  • allOf メソッドは、複数の CompletableFuture オブジェクトを新しい CompletableFuture オブジェクトに結合できます。このオブジェクトは、すべての CompletableFuture オブジェクトが完了した後に完成します。

たとえば、非同期操作を組み合わせる例を次に示します。

CompletableFuture<String> future1 = CompletableFuture.supplyAsync(() -> {
    // 执行第一个异步操作
    return "第一个异步操作结果";
});

CompletableFuture<String> future2 = CompletableFuture.supplyAsync(() -> {
    // 执行第二个异步操作
    return "第二个异步操作结果";
});

CompletableFuture<String> combinedFuture = future1.thenCompose(result1 -> {
    // 将第一个异步操作的结果传递给第二个异步操作
    return future2.thenApply(result2 -> result1 + " " + result2);
});
ログイン後にコピー

結論

Java バックエンド開発では、API 非同期プログラミングに Java CompletableFuture を使用します。プログラムのパフォーマンスを向上させ、ユーザーの待ち時間を短縮できます。 Java CompletableFuture は、開発者が並列プログラミングと非同期プログラミングを簡単に実装し、より簡潔かつ柔軟にするのに役立ちます。非同期プログラミングに Java CompletableFuture を使用する場合は、まず非同期操作を定義し、次にコールバック関数を定義して非同期操作を組み合わせる必要があります。このプログラミング方法により、プログラムがよりシンプルで理解しやすくなり、コードをより効率的かつ堅牢にすることができます。

以上がJava バックエンド開発: Java CompletableFuture を使用した API 非同期プログラミングの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート