java.util.concurrent.Future
public interface Future<V>
rt.jar
1.5
Future
表示异步计算的结果。它提供了检查计算是否完成的方法,以等待计算的完成,并获取计算的结果。
计算完成后只能使用 get
方法来获取结果,如有必要,计算完成前可以阻塞此方法。
取消则由 cancel
方法来执行。还提供了其他方法,以确定任务是正常完成还是被取消了。一旦计算完成,就不能再取消计算。
如果为了可取消性而使用 Future
但又不提供可用的结果,则可以声明 Future
形式类型、并返回 null
作为底层任务的结果。
FutureTask
类是 Future
的一个实现,Future
实现了 Runnable
,所以可通过 Executor
来执行。
FutureTask
可以用 Callable
构造生成
接口定义方法 |
---|
boolean cancel(boolean mayInterruptIfRunning); 试图取消对此任务的执行。如果任务已完成、或已取消,或者由于某些其他原因而无法取消,则此尝试将失败。当调用 cancel 时,如果调用成功,而此任务尚未启动,则此任务将永不运行。如果任务已经启动,则 mayInterruptIfRunning 参数确定是否应该以试图停止任务的方式来中断执行此任务的线程。 |
boolean isCancelled(); 如果在任务正常完成前将其取消,则返回 true 。 |
boolean isDone(); 如果任务已完成,则返回 true 。 |
V get() throws InterruptedException, ExecutionException; 如有必要,等待计算完成,然后获取其结果。 |
V get(long timeout, TimeUnit unit) throws InterruptedException, ExecutionException, TimeoutException; 如有必要,最多等待为使计算完成所给定的时间之后,获取其结果(如果结果可用)。 |