APIdia Launch Partner
Top Description Methods
java.util.concurrent

public Interface CompletionService<V>

Known Direct Implementers
java.util.concurrent.ExecutorCompletionService
Type Parameters
<V>
the type of values the tasks of this service produce and consume

A service that decouples the production of new asynchronous tasks from the consumption of the results of completed tasks. Producers 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().

Since
1.5

Method Summary

Modifier and TypeMethod and Description
public Future<V>

Returns:

the Future representing the next completed task, or null if none are present
poll
()

Retrieves and removes the Future representing the next completed task, or null if none are present.

public Future<V>

Returns:

the Future representing the next completed task or null if the specified waiting time elapses before one is present
poll
(long
how long to wait before giving up, in units of unit
timeout
,
TimeUnit
a TimeUnit determining how to interpret the timeout parameter
unit
)

Retrieves and removes the Future representing the next completed task, waiting if necessary up to the specified wait time if none are yet present.

public Future<V>

Returns:

a Future representing pending completion of the task
submit
(Callable<V>
the task to submit
task
)

Submits a value-returning task for execution and returns a Future representing the pending results of the task.

public Future<V>

Returns:

a Future representing pending completion of the task, and whose get() method will return the given result value upon completion
submit
(Runnable
the task to submit
task
,
V
the result to return upon successful completion
result
)

Submits a Runnable task for execution and returns a Future representing that task.

public Future<V>

Returns:

the Future representing the next completed task
take
()

Retrieves and removes the Future representing the next completed task, waiting if none are yet present.

Method Detail

pollback to summary
public Future<V> poll()

Retrieves and removes the Future representing the next completed task, or null if none are present.

Returns:Future<V>

the Future representing the next completed task, or null if none are present

pollback to summary
public Future<V> poll(long timeout, TimeUnit unit) throws InterruptedException

Retrieves and removes the Future representing the next completed task, waiting if necessary up to the specified wait time if none are yet present.

Parameters
timeout:long

how long to wait before giving up, in units of unit

unit:TimeUnit

a TimeUnit determining how to interpret the timeout parameter

Returns:Future<V>

the Future representing the next completed task or null if the specified waiting time elapses before one is present

Exceptions
InterruptedException:
if interrupted while waiting
submitback to summary
public Future<V> submit(Callable<V> task)

Submits a value-returning task for execution and returns a Future representing the pending results of the task. Upon completion, this task may be taken or polled.

Parameters
task:Callable<V>

the task to submit

Returns:Future<V>

a Future representing pending completion of the task

Exceptions
RejectedExecutionException:
if the task cannot be scheduled for execution
NullPointerException:
if the task is null
submitback to summary
public Future<V> submit(Runnable task, V result)

Submits a Runnable task for execution and returns a Future representing that task. Upon completion, this task may be taken or polled.

Parameters
task:Runnable

the task to submit

result:V

the result to return upon successful completion

Returns:Future<V>

a Future representing pending completion of the task, and whose get() method will return the given result value upon completion

Exceptions
RejectedExecutionException:
if the task cannot be scheduled for execution
NullPointerException:
if the task is null
takeback to summary
public Future<V> take() throws InterruptedException

Retrieves and removes the Future representing the next completed task, waiting if none are yet present.

Returns:Future<V>

the Future representing the next completed task

Exceptions
InterruptedException:
if interrupted while waiting