public interface CompletionService<V>
submit tasks for execution. Consumers
take completed tasks and process their results in the order they complete. A
CompletionService can for example be used to manage asynchronous I/O, in which tasks that perform reads are submitted in one part of a program or system, and then acted upon in a different part of the program when the reads complete, possibly in a different order than they were requested.
Typically, a CompletionService relies on a separate Executor to actually execute the tasks, in which case the CompletionService only manages an internal completion queue. The ExecutorCompletionService class provides an implementation of this approach.
Memory consistency effects: Actions in a thread prior to submitting a task to a CompletionService happen-before actions taken by that task, which in turn happen-before actions following a successful return from the corresponding take().
| Modifier and Type | Method and Description |
|---|---|
Future |
poll()
Retrieves and removes the Future representing the next completed task, or
null if none are present.
|
Future |
poll(long timeout, TimeUnit
Retrieves and removes the Future representing the next completed task, waiting if necessary up to the specified wait time if none are yet present.
|
Future |
submit(Callable
Submits a value-returning task for execution and returns a Future representing the pending results of the task.
|
Future |
submit(Runnable
Submits a Runnable task for execution and returns a Future representing that task.
|
Future |
take()
Retrieves and removes the Future representing the next completed task, waiting if none are yet present.
|
Future<V> submit(Callable <V> task)
task - the task to submit
RejectedExecutionException - if the task cannot be scheduled for execution
NullPointerException - if the task is null
Future<V> submit(Runnable task, V result)
task - the task to submit
result - the result to return upon successful completion
get() method will return the given result value upon completion
RejectedExecutionException - if the task cannot be scheduled for execution
NullPointerException - if the task is null
Future<V> take() throws InterruptedException
InterruptedException - if interrupted while waiting
Future<V> poll()
null if none are present.
null if none are present
Future<V> poll(long timeout, TimeUnit unit) throws InterruptedException
timeout - how long to wait before giving up, in units of
unit
unit - a
TimeUnit determining how to interpret the
timeout parameter
null if the specified waiting time elapses before one is present
InterruptedException - if interrupted while waiting