要獲取JavaFutureTask
的執行結果,您需要使用Future.get()
方法。這個方法會阻塞當前線程,直到任務完成并返回結果。以下是一個簡單的示例:
import java.util.concurrent.*;
public class Main {
public static void main(String[] args) {
// 創建一個線程池
ExecutorService executor = Executors.newSingleThreadExecutor();
// 創建一個JavaFutureTask實例
Callable<String> task = () -> {
// 模擬一個耗時任務
Thread.sleep(3000);
return "任務執行結果";
};
// 將Callable任務提交給線程池并獲取JavaFutureTask實例
Future<String> future = executor.submit(task);
try {
// 獲取任務執行結果,這將阻塞當前線程,直到任務完成
String result = future.get();
System.out.println("任務執行結果: " + result);
} catch (InterruptedException | ExecutionException e) {
e.printStackTrace();
} finally {
// 關閉線程池
executor.shutdown();
}
}
}
在這個示例中,我們創建了一個線程池,然后提交了一個Callable
任務給線程池。Callable
任務返回一個字符串作為結果。我們使用Future.get()
方法獲取任務執行結果,并在控制臺輸出結果。注意,future.get()
方法可能會拋出InterruptedException
或ExecutionException
異常,因此我們需要使用try-catch語句處理這些異常。最后,不要忘記關閉線程池。