- 类型参数:
-
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
- 如果在等待时被中断
-