请用代码说明Future和FutureTask的区别
时间: 2023-02-08 16:26:09 浏览: 152
Future和FutureTask都是Java并发编程中用于异步计算的工具类。
Future是一个接口,定义了一些方法来检查计算是否完成、等待计算完成、获取计算结果。
FutureTask则是Future接口的一个实现类。它实现了Runnable接口,因此可以作为线程的执行体。
下面是一个示例代码,可以看到使用FutureTask需要先实例化,然后再提交给Executor运行。
```java
// 创建线程池
Executor executor = Executors.newCachedThreadPool();
// 使用Future
Future<Integer> future = executor.submit(() -> {
Thread.sleep(2000);
return 100;
});
// 使用FutureTask
FutureTask<Integer> futureTask = new FutureTask<>(() -> {
Thread.sleep(2000);
return 100;
});
executor.execute(futureTask);
```
总结:Future是一个接口,FutureTask是一个实现类,FutureTask可以作为线程的执行体,而Future本身不能。
阅读全文