V
- 此FutureTask的
get
方法返回的结果类型
public class FutureTask<V> extends Object implements RunnableFuture<V>
Future
的基本实现 ,具有启动和取消计算的方法,查询计算是否完整,并检索计算结果。
结果只能在计算完成后才能检索;
如果计算尚未完成,则get
方法将阻止。
一旦计算完成,则无法重新启动或取消计算(除非使用runAndReset()
调用计算 )。
A FutureTask
可用于包装Callable
或Runnable
对象。 因为FutureTask
实现Runnable
,一个FutureTask
可以提交到一个Executor
执行。
除了作为独立类之外,此类还提供了protected
功能,在创建自定义任务类时可能很有用。
Constructor and Description |
---|
FutureTask(Callable<V> callable)
创建一个
FutureTask ,它将在运行时执行给定的
Callable 。
|
FutureTask(Runnable runnable, V result)
创建一个
FutureTask ,将在运行时执行给定的
Runnable ,并安排
get 将在成功完成后返回给定的结果。
|
Modifier and Type | Method and Description |
---|---|
boolean |
cancel(boolean mayInterruptIfRunning)
尝试取消执行此任务。
|
protected void |
done()
此任务转换到状态
isDone (无论是正常还是通过取消)调用的受保护方法。
|
V |
get()
等待计算完成,然后检索其结果。
|
V |
get(long timeout, TimeUnit unit)
如果需要等待最多在给定的时间计算完成,然后检索其结果(如果可用)。
|
boolean |
isCancelled()
如果此任务在正常完成之前取消,则返回
true 。
|
boolean |
isDone()
返回
true 如果任务已完成。
|
void |
run()
将此未来设置为其计算结果,除非已被取消。
|
protected boolean |
runAndReset()
执行计算而不设置其结果,然后将此将来重置为初始状态,如果计算遇到异常或被取消,则不执行此操作。
|
protected void |
set(V v)
将此未来的结果设置为给定值,除非此未来已被设置或已被取消。
|
protected void |
setException(Throwable t)
导致这个未来报告一个 ExecutionException 与给定的可抛弃的原因,除非这个未来已经被设置或被取消。
|
public FutureTask(Callable<V> callable)
FutureTask
,它将在运行时执行给定的
Callable
。
callable
- 可调用任务
NullPointerException
- 如果可调用为null
public FutureTask(Runnable runnable, V result)
FutureTask
,将在运行时执行给定的
Runnable
,并安排
get
将在成功完成后返回给定的结果。
runnable
- 可运行的任务
result
- 成功完成后返回的结果。
如果您不需要特定的结果,请考虑使用以下形式的结构: Future<?> f = new FutureTask<Void>(runnable, null)
NullPointerException
- 如果runnable为null
public boolean isCancelled()
Future
复制
true
。
isCancelled
在界面
Future<V>
true
如果此任务在完成之前被取消
public boolean isDone()
Future
复制
true
如果任务已完成。
完成可能是由于正常终止,异常或取消 - 在所有这些情况下,此方法将返回true
。
public boolean cancel(boolean mayInterruptIfRunning)
Future
复制
cancel
时此任务尚未启动,则此任务不应运行。
如果任务已经开始,那么mayInterruptIfRunning
参数确定是否执行此任务的线程应该以试图停止任务被中断。
此方法返回后,后续调用Future.isDone()
将始终返回true
。 随后电话Future.isCancelled()
总是返回true
如果此方法返回true
。
public V get() throws InterruptedException, ExecutionException
Future
复制
get
在界面
Future<V>
CancellationException
- 如果计算被取消
InterruptedException
- 如果当前线程在等待时中断
ExecutionException
- 如果计算抛出异常
public V get(long timeout, TimeUnit unit) throws InterruptedException, ExecutionException, TimeoutException
Future
复制
get
在界面
Future<V>
timeout
- 等待的最长时间
unit
- 超时参数的时间单位
CancellationException
- 如果计算被取消
InterruptedException
- 如果当前线程在等待时中断
ExecutionException
- 如果计算引发异常
TimeoutException
- 如果等待超时
protected void done()
isDone
(无论是正常还是通过取消)时调用的受保护方法。
默认实现什么都不做。
子类可以覆盖此方法来调用完成回调或执行簿记。
请注意,您可以在执行此方法之前查询状态,以确定此任务是否已被取消。
protected void set(V v)
v
- 值
protected void setException(Throwable t)
ExecutionException
与给定的可抛弃的原因,除非这个未来已经被设置或被取消。
该方法在计算失败时由run()
方法内部调用。
t
- 失败的原因
public void run()
RunnableFuture
复制
run
在界面
Runnable
run
在界面
RunnableFuture<V>
Thread.run()
protected boolean runAndReset()
true
如果成功运行和重置
Submit a bug or feature
For further API reference and developer documentation, see Java SE Documentation. That documentation contains more detailed, developer-targeted descriptions, with conceptual overviews, definitions of terms, workarounds, and working code examples.
Copyright © 1993, 2014, Oracle and/or its affiliates. All rights reserved.