Module  java.base
软件包  java.util.concurrent

Interface Future<V>

  • 参数类型
    V - 该未来 get方法返回的结果类型
    All Known Subinterfaces:
    Response<T>RunnableFuture<V>RunnableScheduledFuture<V>ScheduledFuture<V>
    所有已知实现类:
    CompletableFutureCountedCompleterForkJoinTaskFutureTaskRecursiveActionRecursiveTaskSwingWorkerTask


    public interface Future<V>
    A Future表示异步计算的结果。 提供方法来检查计算是否完成,等待其完成,并检索计算结果。 只有当计算完成后,才能使用方法get检索结果,如果需要,则阻塞,直到准备就绪。 取消由cancel方法执行。 提供其他方法来确定任务是否正常完成或被取消。 计算完成后,不能取消计算。 如果您想使用Future ,为了不可撤销,但不提供可用的结果,您可以声明表单Future<?>类型并返回null作为基础任务的结果。

    示例使用 (请注意,以下课程都是化妆品。)

       interface ArchiveSearcher { String search(String target); } class App { ExecutorService executor = ... ArchiveSearcher searcher = ... void showSearch(String target) throws InterruptedException { Callable<String> task = () -> searcher.search(target); Future<String> future = executor.submit(task); displayOtherThings(); // do other things while searching try { displayText(future.get()); // use future } catch (ExecutionException ex) { cleanup(); return; } } } 
    FutureTask类是实现Future ,实现Runnable ,所以可以由一个Executor执行。 例如,上述结构用submit可以替换为:
       FutureTask<String> future = new FutureTask<>(task); executor.execute(future); 

    内存一致性效果:通过异步计算采取的行动happen-before动作以下相应Future.get()在另一个线程。

    从以下版本开始:
    1.5
    另请参见:
    FutureTaskExecutor
    • 方法摘要

      所有方法  接口方法  抽象方法 
      Modifier and Type 方法 描述
      boolean cancel​(boolean mayInterruptIfRunning)
      尝试取消执行此任务。
      V get​()
      等待计算完成,然后检索其结果。
      V get​(long timeout, TimeUnit unit)
      如果需要等待最多在给定的时间计算完成,然后检索其结果(如果可用)。
      boolean isCancelled​()
      如果此任务在正常完成之前被取消,则返回 true
      boolean isDone​()
      如果此任务完成,则返回 true
    • 方法详细信息

      • cancel

        boolean cancel​(boolean mayInterruptIfRunning)
        尝试取消执行此任务。 如果任务已经完成,已经被取消或由于某种其他原因而无法取消,则此尝试将失败。 如果成功,并且当cancel时此任务尚未启动,则此任务不应运行。 如果任务已经启动,则mayInterruptIfRunning参数确定执行此任务的线程是否应该中断,以试图停止该任务。

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

        参数
        mayInterruptIfRunning - true如果执行该任务的线程应该被中断; 否则,正在进行的任务被允许完成
        结果
        false如果任务无法取消,通常是因为它已经正常完成; 否则为true
      • isCancelled

        boolean isCancelled​()
        如果此任务在正常完成之前被取消,则返回 true
        结果
        true如果此任务在完成之前被取消
      • isDone

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