- java.lang.Object
-
- java.util.concurrent.FutureTask<V>
-
- 参数类型
-
V- 此FutureTask的get方法返回的结果类型
- 实现的所有接口
-
Runnable,Future<V>,RunnableFuture<V>
public class FutureTask<V> extends Object implements RunnableFuture<V>
可取消的异步计算。 此类提供了Future的基本实现,包括启动和取消计算的方法,查询计算是否完成的查询以及检索计算结果。 只有在计算完成后才能检索结果; 如果计算尚未完成,get方法将阻止。 计算完成后,无法重新启动或取消计算(除非使用runAndReset()调用计算)。FutureTask可用于包装Callable或Runnable对象。 因为FutureTask实现Runnable,FutureTask可以将FutureTask提交给Executor以供执行。除了作为独立类之外,此类还提供
protected功能,这在创建自定义任务类时可能很有用。- 从以下版本开始:
- 1.5
-
-
构造方法摘要
构造方法 构造器 描述 FutureTask(Runnable runnable, V result)创建一个FutureTask,在运行时执行给定的Runnable,并安排get在成功完成时返回给定的结果。FutureTask(Callable<V> callable)创建一个FutureTask,在运行时将执行给定的Callable。
-
方法摘要
所有方法 实例方法 具体的方法 变量和类型 方法 描述 protected voiddone()当此任务转换到状态isDone(无论是正常还是通过取消),调用受保护的方法。Vget()如果需要等待计算完成,然后检索其结果。Vget(long timeout, TimeUnit unit)如果需要,最多等待计算完成的给定时间,然后检索其结果(如果可用)。protected booleanrunAndReset()执行计算而不设置其结果,然后将此未来重置为初始状态,如果计算遇到异常或被取消则无法执行此操作。protected voidset(V v)将此future的结果设置为给定值,除非已设置或已取消此未来。protected voidsetException(Throwable t)导致此未来报告带有给定throwable的ExecutionException作为其原因,除非此未来已设置或已取消。StringtoString()返回此FutureTask的字符串表示形式。-
声明方法的类 java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
-
声明方法的接口 java.util.concurrent.Future
cancel, isCancelled, isDone
-
声明方法的接口 java.util.concurrent.RunnableFuture
run
-
-
-
-
构造方法详细信息
-
FutureTask
public FutureTask(Callable<V> callable)
创建一个FutureTask,在运行时将执行给定的Callable。- 参数
-
callable- 可调用的任务 - 异常
-
NullPointerException- 如果callable为null
-
FutureTask
public FutureTask(Runnable runnable, V result)
创建一个FutureTask,在运行时执行给定的Runnable,并安排get在成功完成后返回给定的结果。- 参数
-
runnable- 可运行的任务 -
result- 成功完成后返回的结果。 如果您不需要特定结果,请考虑使用以下形式的结构:Future<?> f = new FutureTask<Void>(runnable, null) - 异常
-
NullPointerException- 如果runnable为null
-
-
方法详细信息
-
get
public V get() throws InterruptedException, ExecutionException
从界面复制的说明:Future如果需要等待计算完成,然后检索其结果。- Specified by:
-
get在界面Future<V> - 结果
- 计算结果
- 异常
-
CancellationException- 如果计算被取消 -
InterruptedException- 如果当前线程在等待时被中断 -
ExecutionException- 如果计算引发异常
-
get
public V get(long timeout, TimeUnit unit) throws InterruptedException, ExecutionException, TimeoutException
从界面复制的说明:Future如果需要,最多等待计算完成的给定时间,然后检索其结果(如果可用)。- Specified by:
-
get在界面Future<V> - 参数
-
timeout- 等待的最长时间 -
unit- 超时参数的时间单位 - 结果
- 计算结果
- 异常
-
CancellationException- 如果计算被取消 -
InterruptedException- 如果当前线程在等待时被中断 -
ExecutionException- 如果计算引发异常 -
TimeoutException- 如果等待超时
-
done
protected void done()
当此任务转换到状态isDone(无论是正常还是通过取消)时调用的受保护方法。 默认实现什么都不做。 子类可以重写此方法以调用完成回调或执行簿记。 请注意,您可以在此方法的实现中查询状态,以确定是否已取消此任务。
-
set
protected void set(V v)
将此future的结果设置为给定值,除非已设置或已取消此未来。成功完成计算后,
RunnableFuture.run()方法在内部调用此方法。- 参数
-
v- 该值
-
setException
protected void setException(Throwable t)
导致此未来报告带有给定throwable的ExecutionException作为其原因,除非此未来已设置或已取消。计算失败时,
RunnableFuture.run()方法在内部调用此方法。- 参数
-
t- 失败的原因
-
runAndReset
protected boolean runAndReset()
执行计算而不设置其结果,然后将此未来重置为初始状态,如果计算遇到异常或被取消则无法执行此操作。 这适用于本质上执行多次的任务。- 结果
-
true如果成功运行并重置
-
-