java FutureTask接受返回参数
时间: 2024-09-28 16:06:37 浏览: 66
简谈java并发FutureTask的实现
Java `FutureTask` 是 `java.util.concurrent` 包中的一个类,它结合了 `Callable` 和 `Future` 接口的功能。`Callable` 是一个可以异步计算并返回结果的对象,而 `FutureTask` 将 `Callable` 的功能封装到 `Runnable` 中,并提供了一个用于获取计算结果的方法。
当你创建一个 `FutureTask` 对象时,你需要传入一个 `Callable<T>` 实例,这里的 `T` 是你期望的结果类型。例如:
```java
Callable<String> callable = () -> {
// 异步执行的任务逻辑,这里假设计算的是字符串结果
String result = "计算得到的结果";
return result;
};
FutureTask<String> futureTask = new FutureTask<>(callable);
ExecutorService executor = Executors.newSingleThreadExecutor();
executor.execute(futureTask); // 开始执行任务
// 程序后续可以这样做来获取结果
String calculatedResult = futureTask.get(); // 等待计算完成并获取结果
```
`futureTask.get()` 这个方法会阻塞直到 `Callable` 计算完成,然后返回计算的结果。如果 `Callable` 抛出异常,那么 `get()` 也会抛出相同的异常。
阅读全文