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 – 如果等待超时