模块  java.base
软件包  java.util.concurrent

Class FutureTask<V>

  • 参数类型
    V - 此FutureTask的 get方法返回的结果类型
    实现的所有接口
    RunnableFuture<V>RunnableFuture<V>

    public class FutureTask<V>
    extends Object
    implements RunnableFuture<V>
    可取消的异步计算。 此类提供了Future的基本实现,包括启动和取消计算的方法,查询计算是否完成的查询以及检索计算结果。 只有在计算完成后才能检索结果; 如果计算尚未完成, get方法将阻止。 计算完成后,无法重新启动或取消计算(除非使用runAndReset()调用计算)。

    FutureTask可用于包装CallableRunnable对象。 因为FutureTask实现RunnableFutureTask可以将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的字符串表示形式。
    • 构造方法详细信息

      • 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
    • 方法详细信息

      • 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如果成功运行并重置
      • toString

        public String toString()
        返回此FutureTask的字符串表示形式。
        重写:
        toStringObject
        实现要求:
        默认实现返回一个标识此FutureTask的字符串及其完成状态。 状态,在括号中,包含字符串之一"Completed Normally""Completed Exceptionally""Cancelled" ,或"Not completed"
        结果
        此FutureTask的字符串表示形式