|
|||||||||
摘要: 嵌套 | 字段 | 构造方法 | 方法 | 详细信息: 字段 | 构造方法 | 方法 |
java.util.concurrent
类 FutureTask<V>
java.lang.Object java.util.concurrent.FutureTask<V>
- 类型参数:
-
V
- 此 FutureTask 的 get 方法所返回的结果类型。
可取消的异步计算。利用开始和取消计算的方法、查询计算是否完成的方法和检索计算结果的方法,此类提供了对 Future
的基本实现。仅在计算完成时才能检索结果;如果计算尚未完成,则阻塞 get 方法。一旦计算完成,就不能再重新开始或取消计算。
可使用 FutureTask 包装 Callable
或 Runnable
对象。因为 FutureTask 实现了 Runnable,所以可将 FutureTask 提交给 Executor
执行。
除了作为一个独立的类外,此类还提供了 protected 功能,这在创建自定义任务类时可能很有用。
- 从以下版本开始:
- 1.5
构造方法摘要 | |
---|---|
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 |
构造方法详细信息 |
---|
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<Object>(runnable, null) - 抛出:
-
NullPointerException
- 如果 runnable 为 null。
方法详细信息 |
---|
isCancelled
public boolean isCancelled()
-
从接口
Future
复制的描述 - 如果在任务正常完成前将其取消,则返回 true。
-
- 指定者:
-
接口
Future<V>
中的isCancelled
-
- 返回:
- 如果任务完成前将其取消,则返回 true。
isDone
public boolean isDone()
-
从接口
Future
复制的描述 - 如果任务已完成,则返回 true。 可能由于正常终止、异常或取消而完成,在所有这些情况中,此方法都将返回 true。
-
- 返回:
- 如果任务已完成,则返回 true。
cancel
public boolean cancel(boolean mayInterruptIfRunning)
-
从接口
Future
复制的描述 - 试图取消对此任务的执行。如果任务已完成、或已取消,或者由于某些其他原因而无法取消,则此尝试将失败。当调用 cancel 时,如果调用成功,而此任务尚未启动,则此任务将永不运行。如果任务已经启动,则 mayInterruptIfRunning 参数确定是否应该以试图停止任务的方式来中断执行此任务的线程。
-
- 参数:
-
mayInterruptIfRunning
- 如果应该中断执行此任务的线程,则为 true;否则允许正在运行的任务运行完成。 - 返回:
- 如果无法取消任务,则返回 false,这通常是由于它已经正常完成;否则返回 true。
get
public V get() throws InterruptedException, ExecutionException
-
从接口
Future
复制的描述 - 如有必要,等待计算完成,然后检索其结果。
-
- 返回:
- 计算的结果。
- 抛出:
-
InterruptedException
- 如果当前的线程在等待时被中断。 -
ExecutionException
- 如果计算抛出异常。
get
public V get(long timeout, TimeUnit unit) throws InterruptedException, ExecutionException, TimeoutException
-
从接口
Future
复制的描述 - 如有必要,最多等待为使计算完成所给定的时间之后,检索其结果(如果结果可用)。
-
- 参数:
-
timeout
- 等待的最大时间。 -
unit
- timeout 参数的时间单位。 - 返回:
- 计算的结果。
- 抛出:
-
InterruptedException
- 如果当前的线程在等待时被中断。 -
ExecutionException
- 如果计算抛出异常。 -
TimeoutException
- 如果等待超时。
done
protected void done()
- 当此任务转换到状态 isDone(不管是正常地还是通过取消)时,调用受保护的方法。默认实现不执行任何操作。子类可以重写此方法,以调用完成回调或执行簿记。注意,可以查询此方法的实现内的状态,从而确定是否已取消了此任务。
-
-