- java.lang.Object
-
- java.util.concurrent.FutureTask<V>
-
- 参数类型
-
V
- 此FutureTask的get
方法返回的结果类型
- 实现的所有接口
-
Runnable
,Future<V>
,RunnableFuture<V>
public class FutureTask<V>extends Objectimplements 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 void
done()
当此任务转换到状态isDone
(无论是正常还是通过取消),调用受保护的方法。V
get()
如果需要等待计算完成,然后检索其结果。V
get(long timeout, TimeUnit unit)
如果需要,最多等待计算完成的给定时间,然后检索其结果(如果可用)。protected boolean
runAndReset()
执行计算而不设置其结果,然后将此未来重置为初始状态,如果计算遇到异常或被取消则无法执行此操作。protected void
set(V v)
将此future的结果设置为给定值,除非已设置或已取消此未来。protected void
setException(Throwable t)
导致此未来报告带有给定throwable的ExecutionException
作为其原因,除非此未来已设置或已取消。String
toString()
返回此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
如果成功运行并重置
-
-