FutureTask futureTask = new FutureTask(new CallableClass());
时间: 2024-09-11 10:01:33 浏览: 46
FutureTask是Java并发包中的一个类,它实现了Future接口和Runnable接口。它可以接收一个Callable任务,并在任务执行完成后返回结果。你可以通过FutureTask的get方法获取任务的执行结果,这个方法会阻塞当前线程直到任务执行完毕。
下面是一个简单的例子来展示如何创建一个FutureTask实例,并执行它:
```java
import java.util.concurrent.Callable;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.FutureTask;
// 假设CallableClass实现了Callable接口,并返回一个String类型的结果
class CallableClass implements Callable<String> {
@Override
public String call() throws Exception {
// 这里是任务的实现,返回一个String类型的结果
return "任务结果";
}
}
public class FutureTaskExample {
public static void main(String[] args) {
// 创建Callable实例
CallableClass callable = new CallableClass();
// 使用Callable实例创建FutureTask
FutureTask<String> futureTask = new FutureTask<>(callable);
// 创建并启动线程执行任务
new Thread(futureTask).start();
try {
// 在当前线程中,使用get方法等待异步任务完成,并获取结果
String result = futureTask.get();
System.out.println(result);
} catch (InterruptedException | ExecutionException e) {
e.printStackTrace();
}
}
}
```
在这个例子中,我们首先创建了一个实现了Callable接口的CallableClass类。然后我们使用这个类的实例创建了一个FutureTask对象。接着我们创建了一个线程,并将FutureTask对象作为参数传递给这个线程的run方法。最后,我们在主线程中调用FutureTask的get方法,这个方法会阻塞当前线程直到Callable任务执行完成并返回结果。
阅读全文