java.lang.Object java.util.concurrent.FutureTask<V>
V
- 此 FutureTask 的
get 方法所返回的结果类型。
public class FutureTask<V>
可取消的异步计算。利用开始和取消计算的方法、查询计算是否完成的方法和获取计算结果的方法,此类提供了对 Future
的基本实现。仅在计算完成时才能获取结果;如果计算尚未完成,则阻塞 get 方法。一旦计算完成,就不能再重新开始或取消计算。
可使用 FutureTask 包装 Callable
或 Runnable
对象。因为 FutureTask 实现了 Runnable,所以可将 FutureTask 提交给 Executor
执行。
除了作为一个独立的类外,此类还提供了 protected 功能,这在创建自定义任务类时可能很有用。
构造方法摘要 | |
---|---|
FutureTask(Callable<V> callable) 创建一个 FutureTask,一旦运行就执行给定的 Callable。 |
|
FutureTask(Runnable runnable, V result) 创建一个 FutureTask,一旦运行就执行给定的 Runnable,并安排成功完成时 get 返回给定的结果 。 |
方法摘要 | |
---|---|
boolean |
cancel(boolean mayInterruptIfRunning) 试图取消对此任务的执行。 |
protected void |
done() 当此任务转换到状态 isDone(不管是正常地还是通过取消)时,调用受保护的方法。 |
V |
get() 如有必要,等待计算完成,然后获取其结果。 |
V |
get(long timeout, TimeUnit unit) 如有必要,最多等待为使计算完成所给定的时间之后,获取其结果(如果结果可用)。 |
boolean |
isCancelled() 如果在任务正常完成前将其取消,则返回 true。 |
boolean |
isDone() 如果任务已完成,则返回 true。 |
void |
run() 除非已将此 Future 取消,否则将其设置为其计算的结果。 |
protected boolean |
runAndReset() 执行计算而不设置其结果,然后将此 Future 重置为初始状态,如果计算遇到异常或已取消,则该操作失败。 |
protected void |
set(V v) 除非已经设置了此 Future 或已将其取消,否则将其结果设置为给定的值。 |
protected void |
setException(Throwable t) 除非已经设置了此 Future 或已将其取消,否则它将报告一个 ExecutionException,并将给定的 throwable 作为其原因。 |
从类 java.lang.Object 继承的方法 |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
构造方法详细信息 |
---|
public FutureTask(Callable<V> callable)
callable
- 可调用的任务。
NullPointerException
- 如果 callable 为 null。
public FutureTask(Runnable runnable, V result)
runnable
- 可运行的任务。
result
- 成功完成时要返回的结果。如果不需要特定的结果,则考虑使用下列形式的构造:
Future<?> f = new FutureTask<Object>(runnable, null)
NullPointerException
- 如果 runnable 为 null。
方法详细信息 |
---|
public boolean isCancelled()
Future
复制的描述
Future<V>
中的
isCancelled
public boolean isDone()
Future
复制的描述
public boolean cancel(boolean mayInterruptIfRunning)
Future
复制的描述
此方法返回后,对 Future.isDone()
的后续调用将始终返回 true。如果此方法返回 true,则对 Future.isCancelled()
的后续调用将始终返回 true。
mayInterruptIfRunning
- 如果应该中断执行此任务的线程,则为
true;否则允许正在运行的任务运行完成
public V get() throws InterruptedException, ExecutionException
Future
复制的描述
CancellationException
- 如果计算被取消
InterruptedException
- 如果当前的线程在等待时被中断
ExecutionException
- 如果计算抛出异常
public V get(long timeout, TimeUnit unit) throws InterruptedException, ExecutionException, TimeoutException
Future
复制的描述
timeout
- 等待的最大时间
unit
- timeout 参数的时间单位
CancellationException
- 如果计算被取消
InterruptedException
- 如果当前的线程在等待时被中断
ExecutionException
- 如果计算抛出异常
TimeoutException
- 如果等待超时
protected void done()
protected void set(V v)
v
- 值
protected void setException(Throwable t)
t
- 失败的原因
public void run()
Runnable
中的
run
RunnableFuture<V>
中的
run
Thread.run()
protected boolean runAndReset()