概述
FutureTask
可取消的异步任务,提供Future
的基础实现,并实现了Runnable
接口。FutureTask
包含了取消与启动计算的方法,查询计算是否完成以及检索计算结果的方法。只有在计算完成才能检索到结果,调用get()
方法时如果任务还没有完成将会阻塞调用线程至到任务完成。一旦计算完成就不能重新开始与取消计算,但可以调用runAndReset()
重置状态后再重新计算。
类图
FutureTask
实现了RunnableFuture
接口,而RunnableFuture
接口扩展自Future
Runnable
接口,在创建FutureTask
时可以使用Callable
接口的实例或者Lambda表达式,也可以使用Runnable
的实例,但内部还是会使用适配器模式转换成Callable
实例类型。
创建第一个任务
使用Callable
创建一个FutureTask
实例:
FutureTask<Boolean> future = new FutureTas