Future的理解

220 阅读1分钟

Future的理解

Future是并发包中对Callable的的增强,表示从异步计算返回的值。它包含检查计算是否已完成或等待它,检索结果的方法。在前面的代码中,Future 的 get() 方法阻塞了调用线程,等待 Callable 完成计算,然后检索结果。该接口还包含取消 Callable 执行的方法。但是,一旦计算完成,就不能取消

Future主要方法的用法

boolean cancel(boolean mayInterruptIfRunning);

方法可以用来停止一个任务,如果任务可以停止(通过mayInterruptIfRunning来进行判断),则可以返回true,如果任务已经完成或者已经停止,或者这个任务无法停止,则会返回false.

boolean isCancelled(); 方法判断当前方法是否取消

boolean isDone(); 判断当前任务是否已经完成 完成返回true

V get() throws InterruptedException, ExecutionException;

获取任务执行结果,该方法是阻塞,会一直等待执行结果,异常抛出情况: CancellationException – 如果计算被取消

ExecutionException – 如果计算抛出异常

InterruptedException – 如果当前线程在等待时被中断

V get(long timeout, TimeUnit unit) throws InterruptedException, ExecutionException, TimeoutException;

增加等待获取结果的时长,最多等待给定时间以完成计算,然后检索其结果。 参数: timeout - 等待的最长时间 unit - timeout 参数的时间单位 返回: 计算结果 Throws:

CancellationException - 如果计算被取消

ExecutionException - 如果计算抛出异常

InterruptedException - 如果当前线程在等待时被中断

TimeoutException – 如果等待超时