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

Interface CompletionService<V>

  • 所有已知实现类:
    ExecutorCompletionService

    public interface CompletionService<V>
    一种服务,它将新异步任务的生成与已完成任务的结果的消耗分离。 生产者submit执行任务。 消费者take按照他们完成的顺序完成了任务并处理了他们的结果。 例如, CompletionService可用于管理异步I / O,其中执行读取的任务在程序或系统的一个部分中提交,然后在读取完成时在程序的不同部分中执行,可能在不同于他们要求的顺序。

    通常, CompletionService依赖于单独的Executor来实际执行任务,在这种情况下, CompletionService仅管理内部完成队列。 ExecutorCompletionService类提供了此方法的实现。

    内存一致性效果:提交任务的前行动线程CompletionService happen-before由该任务所采取的行动,进而发生,之前从以下相应的成功返回行动take()

    从以下版本开始:
    1.5
    • 方法摘要

      所有方法  实例方法 抽象方法 
      变量和类型 方法 描述
      Future<V> poll()
      检索并删除表示下一个已完成任务的Future,如果不存在,则 null
      Future<V> poll​(long timeout, TimeUnit unit)
      检索并删除表示下一个已完成任务的Future,必要时等待指定的等待时间(如果尚未存在)。
      Future<V> submit​(Runnable task, V result)
      提交Runnable任务以执行并返回表示该任务的Future。
      Future<V> submit​(Callable<V> task)
      提交值返回任务以执行并返回表示任务的挂起结果的Future。
      Future<V> take()
      检索并删除表示下一个已完成任务的Future,如果还没有,则等待。
    • 方法详细信息

      • submit

        Future<V> submit​(Callable<V> task)
        提交值返回任务以执行并返回表示任务的挂起结果的Future。 完成后,可以采取或轮询此任务。
        参数
        task - 要提交的任务
        结果
        表示未完成任务的Future
        异常
        RejectedExecutionException - 如果无法安排任务执行
        NullPointerException - 如果任务为空
      • submit

        Future<V> submit​(Runnable task,
                         V result)
        提交Runnable任务以执行并返回表示该任务的Future。 完成后,可以采取或轮询此任务。
        参数
        task - 要提交的任务
        result - 成功完成后返回的结果
        结果
        表示未完成任务的Future,其 get()方法将在完成时返回给定的结果值
        异常
        RejectedExecutionException - 如果无法安排任务执行
        NullPointerException - 如果任务为空
      • poll

        Future<V> poll()
        检索并删除表示下一个已完成任务的Future,如果不存在,则 null
        结果
        表示下一个已完成任务的Future,如果不存在, null
      • poll

        Future<V> poll​(long timeout,
                       TimeUnit unit)
                throws InterruptedException
        检索并删除表示下一个已完成任务的Future,必要时等待指定的等待时间(如果尚未存在)。
        参数
        timeout - 放弃前等待多长时间,单位为 unit
        unit -一个 TimeUnit确定如何解释 timeout参数
        结果
        表示下一个已完成任务的Future或 null如果指定的等待时间在一个任务出现之前已经过去
        异常
        InterruptedException - 等待时中断