ホームページ > Java > &#&チュートリアル > Java 並行プログラミングで非同期プログラミングに Future と Callable を使用する方法は?

Java 並行プログラミングで非同期プログラミングに Future と Callable を使用する方法は?

王林
リリース: 2024-05-08 10:39:02
オリジナル
756 人が閲覧しました

Java 非同期プログラミングに Future と Callable を使用する: Future は非同期操作の結果をカプセル化し、get() メソッドを通じて戻り値を取得します。 Callable は、Runnable に似ていますが、値を返すことができる非同期タスクの作成に使用されます。この例では、Callable タスクが作成され、非同期実行のために executor サービスに送信されます。メインスレッドは引き続き他のタスクを実行し、結果が必要な場合は Future.get() を呼び出して結果を取得します。最後に、executor サービスをシャットダウンしてリソースを解放します。

Java 并发编程中如何使用 Future 和 Callable 进行异步编程?

Java での非同期プログラミング Future と Callable を使用した同時プログラミング

はじめに

非同期プログラミングは、メインスレッドをブロックせずにタスクの同時実行を可能にする手法です。 Java では、Future インターフェイスと Callable インターフェイスを使用して非同期プログラミングを実装できます。

Future

Future は、非同期操作の結果のカプセル化です。タスクがまだ完了していない場合でも、タスクの戻り値を取得するために使用されます。 Future は、タスクが完了したときに結果を返す get() メソッドを提供します。 get() 方法,当任务完成时,它将返回结果。

Callable

Callable 是一个用于创建异步任务的接口。它与 Runnable 接口类似,但是 Callable 可以返回一个值,而 Runnable 只能执行一个操作。

异步编程示例

下面是一个使用 Future 和 Callable 进行异步编程的示例:

import java.util.concurrent.*;

public class AsyncExample {

    public static void main(String[] args) {

        ExecutorService executorService = Executors.newSingleThreadExecutor();

        // 创建 Callable 任务,它将执行一个耗时的操作并返回结果
        Callable<Integer> task = () -> {
            // 模拟耗时的任务
            Thread.sleep(1000);
            return 42;
        };

        // 将 Callable 任务提交到执行器服务,它将异步执行任务
        Future<Integer> future = executorService.submit(task);

        // 主线程可以继续执行其他任务,而不必等待 Callable 任务完成
        System.out.println("Main thread is doing other work.");

        // 当需要结果时,可以调用 Future 的 get() 方法来获取它
        try {
            // 等待任务完成并获取结果
            Integer result = future.get();
            System.out.println("Result: " + result);
        } catch (InterruptedException | ExecutionException e) {
            // 处理任务中断或执行异常
            e.printStackTrace();
        } finally {
            // 关闭执行器服务以释放资源
            executorService.shutdown();
        }
    }
}
ログイン後にコピー

在这个示例中:

  • task 是一个 Callable 任务,它执行一个耗时的操作并返回结果。
  • future 是一个 Future,它封装了 Callable 任务的结果。
  • executorService 是一个执行器服务,它用于异步执行 Callable 任务。
  • 主线程在提交任务后可以继续执行其他任务,无需等待任务完成。
  • 当需要结果时,主线程可以调用 future.get()
Callable🎜🎜🎜Callable は、非同期タスクを作成するためのインターフェイスです。これは Runnable インターフェイスに似ていますが、Callable は値を返すことができるのに対し、Runnable は 1 つの操作しか実行できません。 🎜🎜🎜非同期プログラミングの例🎜🎜🎜Future と Callable を使用した非同期プログラミングの例を次に示します: 🎜rrreee🎜 この例では: 🎜
  • task は Callable タスクであり、実行されます時間のかかる操作を実行し、結果を返します。 🎜
  • future は、Callable タスクの結果をカプセル化する Future です。 🎜
  • executorService は、呼び出し可能なタスクを非同期に実行するために使用されるエグゼキューター サービスです。 🎜
  • メインスレッドは、タスクを送信した後、タスクの完了を待たずに他のタスクの実行を続行できます。 🎜
  • 結果が必要な場合、メインスレッドは future.get() メソッドを呼び出して結果を取得できます。 🎜🎜

以上がJava 並行プログラミングで非同期プログラミングに Future と Callable を使用する方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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