| java.util.concurrent.CompletionService<V> | 
        
          
        
        Known Indirect Subclasses
        
        | 
      
       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()
       
       .
      
| Public Methods | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| 
          | 
        
          
          Retrieves and removes the Future representing the next
 completed task, or
           
        
           null
          
          if none are present.
          | 
       ||||||||||
| 
          | 
        
          
          Retrieves and removes the Future representing the next
 completed task, waiting if necessary up to the specified wait
 time if none are yet present.
          
         | 
       ||||||||||
| 
          | 
        
          
          Submits a value-returning task for execution and returns a Future
 representing the pending results of the task.
          
         | 
       ||||||||||
| 
          | 
        
          
          Submits a Runnable task for execution and returns a Future
 representing that task.
          
         | 
       ||||||||||
| 
          | 
        
          
          Retrieves and removes the Future representing the next
 completed task, waiting if none are yet present.
          
         | 
       ||||||||||
         Retrieves and removes the Future representing the next
 completed task, or
         
          null
         
         if none are present.
        
           null
          
          if none are present
         Retrieves and removes the Future representing the next completed task, waiting if necessary up to the specified wait time if none are yet present.
| 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 | 
|---|
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.
| task | the task to submit | 
|---|
| RejectedExecutionException | if the task cannot be scheduled for execution | 
|---|---|
| NullPointerException | if the task is null | 
Submits a Runnable task for execution and returns a Future representing that task. Upon completion, this task may be taken or polled.
| 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 | 
Retrieves and removes the Future representing the next completed task, waiting if none are yet present.
| InterruptedException | if interrupted while waiting | 
|---|