Java 非同期プログラミングに Future と Callable を使用する: Future は非同期操作の結果をカプセル化し、get() メソッドを通じて戻り値を取得します。 Callable は、Runnable に似ていますが、値を返すことができる非同期タスクの作成に使用されます。この例では、Callable タスクが作成され、非同期実行のために executor サービスに送信されます。メインスレッドは引き続き他のタスクを実行し、結果が必要な場合は Future.get() を呼び出して結果を取得します。最後に、executor サービスをシャットダウンしてリソースを解放します。
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()
task
は Callable タスクであり、実行されます時間のかかる操作を実行し、結果を返します。 🎜future
は、Callable タスクの結果をカプセル化する Future です。 🎜executorService
は、呼び出し可能なタスクを非同期に実行するために使用されるエグゼキューター サービスです。 🎜future.get()
メソッドを呼び出して結果を取得できます。 🎜🎜以上がJava 並行プログラミングで非同期プログラミングに Future と Callable を使用する方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。