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

Interface Future<V>

  • 参数类型
    V - 此Future的 get方法返回的结果类型
    All Known Subinterfaces:
    RunnableFuture<V>RunnableScheduledFuture<V>ScheduledFuture<V>
    所有已知实现类:
    CompletableFutureCountedCompleterForkJoinTaskFutureTaskRecursiveActionRecursiveTaskSwingWorker

    public interface Future<V>
    Future表示异步计算的结果。 提供方法以检查计算是否完成,等待其完成,以及检索计算结果。 只有在计算完成时才能使用方法get检索结果,必要时将其阻塞直到准备就绪。 取消由cancel方法执行。 提供了其他方法来确定任务是否正常完成或被取消。 计算完成后,无法取消计算。 如果您希望使用Future以获取可取消性但未提供可用结果,则可以声明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
    • 方法摘要

      所有方法  实例方法 抽象方法 
      变量和类型 方法 描述
      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如果此任务完成