public interface CompletionService<V>
submit
执行任务。
消费者take
完成任务并按照完成的顺序处理其结果。
甲CompletionService
可以例如被用来管理异步I / O,其中执行读取的程序或系统的一个组成部分被提交,然后任务在程序的不同部分采取行动在所涉及的读出完成时,可能当不同于他们要求的顺序。
通常, CompletionService
依靠单独的Executor
来实际执行任务,在这种情况下, CompletionService
仅管理内部完成队列。 ExecutorCompletionService
类提供了这种方法的实现。
内存一致性效果:提交任务的前行动线程CompletionService
happen-before由该任务所采取的行动,进而发生,之前从以下相应的成功返回行动take()
。
Modifier and Type | Method and Description |
---|---|
Future<V> |
poll()
检索并移除未来表示下一个已完成的任务,或
null ,如果不存在。
|
Future<V> |
poll(long timeout, TimeUnit unit)
检索并删除表示下一个完成的任务的未来,如果还没有,则等待必要时直到指定的等待时间。
|
Future<V> |
submit(Callable<V> task)
提交值返回任务以执行,并返回代表任务待处理结果的Future。
|
Future<V> |
submit(Runnable task, V result)
提交一个可运行的任务执行,并返回一个表示该任务的未来。
|
Future<V> |
take()
检索并删除代表下一个完成任务的未来,等待是否还没有任务。
|
Future<V> submit(Callable<V> task)
task
- 要提交的任务
RejectedExecutionException
- 如果任务无法安排执行
NullPointerException
- 如果任务为null
Future<V> submit(Runnable task, V result)
task
- 要提交的任务
result
- 成功完成后返回的结果
get()
方法将在完成后返回给定的结果值
RejectedExecutionException
- 如果任务无法安排执行
NullPointerException
- 如果任务为空
Future<V> take() throws InterruptedException
InterruptedException
- 如果在等待时中断
Future<V> poll(long timeout, TimeUnit unit) throws InterruptedException
timeout
- 放弃等待多久,以
unit
为单位
unit
- a
TimeUnit
确定如何解释
timeout
参数
null
如果指定的等待时间过去之前存在
InterruptedException
- 如果在等待时中断