使用 Future 和 Callable 進行 Java 非同步程式設計:Future 封裝非同步操作的結果,透過 get() 方法取得傳回值。 Callable 用於建立非同步任務,類似 Runnable 但可傳回值。在範例中,建立了一個 Callable 任務,提交給執行器服務非同步執行。主執行緒繼續執行其他任務,當需要結果時,呼叫 Future.get() 取得。最終關閉執行器服務以釋放資源。
使用Future 和Callable 進行Java 並發程式設計中的非同步程式設計
非同步程式設計是一種允許並發執行任務而不阻塞主執行緒的技術。在 Java 中,可以使用 Future 和 Callable 介面來實作非同步程式設計。
Future
Future 是一個非同步運算的結果封裝。它用於獲取任務的返回值,即使任務尚未完成。 Future 提供了 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()
方法取得它。 以上是Java 並發程式設計如何使用 Future 和 Callable 進行非同步程式設計?的詳細內容。更多資訊請關注PHP中文網其他相關文章!