要获取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语句处理这些异常。最后,不要忘记关闭线程池。