-
- 所有已知实现类:
-
ExecutorCompletionService
public interface CompletionService<V>
一种将新异步任务的生产与已完成任务的结果消耗相分离的服务。 生产者submit
执行任务。 消费者take
完成任务并按照完成的顺序处理其结果。 ACompletionService
可以例如用于管理异步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(long timeout, TimeUnit unit) throws InterruptedException
检索并删除表示下一个完成的任务的未来,如果还没有,则等待必要时直到指定的等待时间。- 参数
-
timeout
- 放弃之前等待多久,以unit
为单位 -
unit
- aTimeUnit
确定如何解释timeout
参数 - 结果
-
未来代表下一个完成的任务或
null
如果指定的等待时间过去之前存在 - 异常
-
InterruptedException
- 如果等待中断
-
-