Module java.base

Interface CompletionService<V>

类型参数:
V - 该服务的任务产生和消费的值的类型
所有已知的实现类:
ExecutorCompletionService

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

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

内存一致性效果: 在将任务提交给 CompletionService 之前的线程中的操作 先于 该任务执行的操作,而这些操作又 先于 从相应的 take() 成功返回后的操作。

自 JDK 版本:
1.5
  • Method Summary

    Modifier and Type
    Method
    Description
    poll()
    检索并移除代表下一个已完成任务的 Future,如果没有则返回 null
    poll(long timeout, TimeUnit unit)
    检索并移除代表下一个已完成任务的 Future,如果尚未存在则等待指定的等待时间。
    submit(Runnable task, V result)
    提交一个 Runnable 任务以供执行,并返回代表该任务的 Future。
    submit(Callable<V> task)
    提交一个返回值任务以供执行,并返回代表任务待定结果的 Future。
    take()
    检索并移除代表下一个已完成任务的 Future,如果尚未存在则等待。
  • Method Details

    • submit

      Future<V> submit(Callable<V> task)
      提交一个返回值任务以供执行,并返回代表任务待定结果的 Future。完成后,可以获取或轮询此任务。
      参数:
      task - 要提交的任务
      返回:
      代表任务待定完成的 Future
      抛出:
      RejectedExecutionException - 如果无法安排任务执行
      NullPointerException - 如果任务为 null
    • submit

      Future<V> submit(Runnable task, V result)
      提交一个 Runnable 任务以供执行,并返回代表该任务的 Future。完成后,可以获取或轮询此任务。
      参数:
      task - 要提交的任务
      result - 成功完成时要返回的结果
      返回:
      代表任务待定完成的 Future,其 get() 方法将在完成时返回给定的结果值
      抛出:
      RejectedExecutionException - 如果无法安排任务执行
      NullPointerException - 如果任务为 null
    • take

      Future<V> take() throws InterruptedException
      检索并移除代表下一个已完成任务的 Future,如果尚未存在则等待。
      返回:
      代表下一个已完成任务的 Future
      抛出:
      InterruptedException - 如果在等待时被中断
    • 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 - 如果在等待时被中断