- 类型参数:
-
V- 该服务的任务产生和消费的值的类型
- 所有已知的实现类:
-
ExecutorCompletionService
public interface CompletionService<V>
一个服务,将新的异步任务的生产与已完成任务结果的消费解耦。生产者
submit 任务以供执行。消费者 take 已完成的任务并按完成顺序处理其结果。例如,CompletionService 可用于管理异步 I/O,其中执行读取的任务在程序或系统的一部分中提交,然后在程序的另一部分在读取完成时对其进行处理,可能不同于请求时的顺序。
通常,CompletionService 依赖于一个单独的 Executor 来实际执行任务,此时 CompletionService 仅管理内部完成队列。ExecutorCompletionService 类提供了这种方法的实现。
内存一致性效果: 在将任务提交给 CompletionService 之前的线程中的操作 先于 该任务执行的操作,而这些操作又 先于 从相应的 take() 成功返回后的操作。
- 自 JDK 版本:
- 1.5
-
Method Details
-
submit
提交一个返回值任务以供执行,并返回代表任务待定结果的 Future。完成后,可以获取或轮询此任务。- 参数:
-
task- 要提交的任务 - 返回:
- 代表任务待定完成的 Future
- 抛出:
-
RejectedExecutionException- 如果无法安排任务执行 -
NullPointerException- 如果任务为 null
-
submit
提交一个 Runnable 任务以供执行,并返回代表该任务的 Future。完成后,可以获取或轮询此任务。- 参数:
-
task- 要提交的任务 -
result- 成功完成时要返回的结果 - 返回:
-
代表任务待定完成的 Future,其
get()方法将在完成时返回给定的结果值 - 抛出:
-
RejectedExecutionException- 如果无法安排任务执行 -
NullPointerException- 如果任务为 null
-
take
检索并移除代表下一个已完成任务的 Future,如果尚未存在则等待。- 返回:
- 代表下一个已完成任务的 Future
- 抛出:
-
InterruptedException- 如果在等待时被中断
-
poll
检索并移除代表下一个已完成任务的 Future,如果没有则返回null。- 返回:
-
代表下一个已完成任务的 Future,如果没有则返回
null
-
poll
检索并移除代表下一个已完成任务的 Future,如果尚未存在则等待指定的等待时间。- 参数:
-
timeout- 在放弃之前等待的时间长度,以unit为单位 -
unit- 一个TimeUnit,用于解释timeout参数 - 返回:
-
代表下一个已完成任务的 Future,如果指定的等待时间在任务出现之前过去,则返回
null - 抛出:
-
InterruptedException- 如果在等待时被中断
-