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

Interface CompletionService<V>

  • 所有已知实现类:
    ExecutorCompletionService


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

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

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

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

      所有方法  接口方法  抽象方法 
      Modifier and Type 方法 描述
      Future<V> poll​()
      检索并删除代表下一个完成的任务的未来,或者如果没有任何一个,则 null
      Future<V> poll​(long timeout, TimeUnit unit)
      检索并删除表示下一个完成的任务的未来,如果还没有,则等待必要时直到指定的等待时间。
      Future<V> submit​(Runnable task, V result)
      提交一个可运行的任务执行,并返回一个表示该任务的未来。
      Future<V> submit​(Callable<V> task)
      提交值返回任务以执行,并返回代表任务待处理结果的Future。
      Future<V> take​()
      检索并删除代表下一个完成任务的未来,等待是否还没有任务。
    • 方法详细信息

      • submit

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

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

        Future<V> take​()
                throws InterruptedException
        检索并删除代表下一个完成任务的未来,等待是否还没有任务。
        结果
        未来代表下一个完成的任务
        异常
        InterruptedException - 如果在等待时中断
      • poll

        Future<V> poll​()
        检索并删除代表下一个完成的任务的未来,或者如果没有任何一个,则 null
        结果
        未来代表下一个完成的任务,或 null如果没有)
      • poll

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