Most visited

Recently visited

Added in API level 1

FutureTask

public class FutureTask
extends Object implements RunnableFuture<V>

java.lang.Object
   ↳ java.util.concurrent.FutureTask<V>


可取消的异步计算。 该类提供了Future的基本实现, Future包含启动和取消计算的方法,查询计算是否完成以及检索计算结果的方法。 只有在计算完成后才能检索结果; 如果计算尚未完成, get方法将会阻塞。 计算完成后,计算不能重新启动或取消(除非使用runAndReset()调用计算)。

A FutureTask可用于包装CallableRunnable对象。 由于FutureTask实现RunnableFutureTask可以将FutureTask提交给Executor执行。

除了作为独立类使用外,此类还提供了 protected功能, protected功能在创建自定义任务类时可能很有用。

Summary

Public constructors

FutureTask(Callable<V> callable)

创建一个 FutureTask ,在运行时执行给定的 Callable

FutureTask(Runnable runnable, V result)

创建一个 FutureTask ,它将在运行时执行给定的 Runnable ,并安排 get在成功完成时返回给定的结果。

Public methods

boolean cancel(boolean mayInterruptIfRunning)

试图取消执行此任务。

V get(long timeout, TimeUnit unit)

如果需要,最多等待计算完成的给定时间,然后检索其结果(如果可用)。

V get()

如果需要,等待计算完成,然后检索其结果。

boolean isCancelled()

如果此任务在正常完成之前取消,则返回 true

boolean isDone()

如果此任务完成,则返回 true

void run()

将此Future设置为其计算结果,除非它已被取消。

Protected methods

void done()

当此任务转换到状态 isDone时调用受保护的方法(通常或通过取消)。

boolean runAndReset()

执行计算而不设置其结果,然后将此未来重置为初始状态,如果计算遇到异常或被取消,则无法执行此操作。

void set(V v)

将这个未来的结果设置为给定值,除非这个未来已经被设置或被取消。

void setException(Throwable t)

导致这个未来报告 ExecutionException作为其原因,除非这个未来已经被确定或被取消。

Inherited methods

From class java.lang.Object
From interface java.util.concurrent.RunnableFuture
From interface java.lang.Runnable
From interface java.util.concurrent.Future

Public constructors

FutureTask

Added in API level 1
FutureTask (Callable<V> callable)

创建一个 FutureTask ,运行时将执行给定的 Callable

Parameters
callable Callable: the callable task
Throws
NullPointerException if the callable is null

FutureTask

Added in API level 1
FutureTask (Runnable runnable, 
                V result)

创建一个 FutureTask ,它将在运行时执行给定的 Runnable ,并安排 get在成功完成时返回给定结果。

Parameters
runnable Runnable: the runnable task
result V: the result to return on successful completion. If you don't need a particular result, consider using constructions of the form: Future<?> f = new FutureTask<Void>(runnable, null)
Throws
NullPointerException if the runnable is null

Public methods

cancel

Added in API level 1
boolean cancel (boolean mayInterruptIfRunning)

试图取消执行此任务。 如果任务已完成,已被取消或因其他原因无法取消,此尝试将失败。 如果成功,并且此任务在cancel时尚未开始,则此任务不应运行。 如果任务已经启动,那么mayInterruptIfRunning参数确定执行此任务的线程是否应该中断以试图停止任务。

在此方法返回后,对isDone()后续调用将始终返回true 对后续调用isCancelled()总是返回true如果此方法返回true

Parameters
mayInterruptIfRunning boolean: true if the thread executing this task should be interrupted; otherwise, in-progress tasks are allowed to complete
Returns
boolean false if the task could not be cancelled, typically because it has already completed normally; true otherwise

get

Added in API level 1
V get (long timeout, 
                TimeUnit unit)

如果需要,最多等待计算完成的给定时间,然后检索其结果(如果可用)。

Parameters
timeout long: the maximum time to wait
unit TimeUnit: the time unit of the timeout argument
Returns
V the computed result
Throws
CancellationException
InterruptedException
ExecutionException
TimeoutException

get

Added in API level 1
V get ()

如果需要,等待计算完成,然后检索其结果。

Returns
V the computed result
Throws
CancellationException
InterruptedException
ExecutionException

isCancelled

Added in API level 1
boolean isCancelled ()

如果此任务在正常完成之前取消,则返回 true

Returns
boolean true if this task was cancelled before it completed

isDone

Added in API level 1
boolean isDone ()

如果此任务完成,则返回true 完成可能是由于正常终止,例外或取消 - 在所有这些情况下,此方法将返回true

Returns
boolean true if this task completed

run

Added in API level 1
void run ()

将此Future设置为其计算结果,除非它已被取消。

Protected methods

done

Added in API level 1
void done ()

当此任务转换到状态isDone时调用受保护的方法(通常或通过取消)。 默认实现什么都不做。 子类可以重写此方法来调用完成回调或执行簿记。 请注意,您可以在此方法的实现中查询状态以确定此任务是否已被取消。

runAndReset

Added in API level 1
boolean runAndReset ()

执行计算而不设置其结果,然后将此未来重置为初始状态,如果计算遇到异常或被取消,则无法执行此操作。 这被设计用于内部执行多次的任务。

Returns
boolean true if successfully run and reset

set

Added in API level 1
void set (V v)

将这个未来的结果设置为给定值,除非这个未来已经被设置或被取消。

该方法在成功完成计算后由 run()方法在内部调用。

Parameters
v V: the value

setException

Added in API level 1
void setException (Throwable t)

导致这个未来报告一个 ExecutionException作为其原因,除非这个未来已经被确定或被取消。

该方法在计算失败时由 run()方法在内部调用。

Parameters
t Throwable: the cause of failure

Hooray!