ListeningExecutorService
Date: 2016-05-24

com.google.common.util.concurrent

## Interface ListeningExecutorService

- All Superinterfaces:
    java.util.concurrent.Executor, java.util.concurrent.ExecutorService
  All Known Subinterfaces:
    ListeningScheduledExecutorService
  All Known Implementing Classes:
    AbstractListeningExecutorService, ForwardingListeningExecutorService

      public interface ListeningExecutorService
      extends java.util.concurrent.ExecutorService

  An `ExecutorService` that returns `ListenableFuture` instances. To create an instance from an existing `ExecutorService`, call `MoreExecutors.listeningDecorator(ExecutorService)`.
  Since:
    10.0

- - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `<T> java.util.List<java.util.concurrent.Future<T>>` | `invokeAll(java.util.Collection<? extends java.util.concurrent.Callable<T>> tasks)`
    `<T> java.util.List<java.util.concurrent.Future<T>>` | `invokeAll(java.util.Collection<? extends java.util.concurrent.Callable<T>> tasks, long timeout, java.util.concurrent.TimeUnit unit)`
    `<T> ListenableFuture<T>` | `submit(java.util.concurrent.Callable<T> task)`
    `ListenableFuture<?>` | `submit(java.lang.Runnable task)`
    `<T> ListenableFuture<T>` | `submit(java.lang.Runnable task, T result)`

    - ### Methods inherited from interface java.util.concurrent.ExecutorService

      `awaitTermination, invokeAny, invokeAny, isShutdown, isTerminated, shutdown, shutdownNow`

    - ### Methods inherited from interface java.util.concurrent.Executor

      `execute`

- - ### Method Detail

    - #### submit

          <T> ListenableFuture<T> submit(java.util.concurrent.Callable<T> task)

      Specified by:
        `submit` in interface `java.util.concurrent.ExecutorService`
      Returns:
        a `ListenableFuture` representing pending completion of the task
      Throws:
        `java.util.concurrent.RejectedExecutionException`

    - #### submit

          ListenableFuture<?> submit(java.lang.Runnable task)

      Specified by:
        `submit` in interface `java.util.concurrent.ExecutorService`
      Returns:
        a `ListenableFuture` representing pending completion of the task
      Throws:
        `java.util.concurrent.RejectedExecutionException`

    - #### submit

          <T> ListenableFuture<T> submit(java.lang.Runnable task,
                                       T result)

      Specified by:
        `submit` in interface `java.util.concurrent.ExecutorService`
      Returns:
        a `ListenableFuture` representing pending completion of the task
      Throws:
        `java.util.concurrent.RejectedExecutionException`

    - #### invokeAll

          <T> java.util.List<java.util.concurrent.Future<T>> invokeAll(java.util.Collection<? extends java.util.concurrent.Callable<T>> tasks)
                                                                   throws java.lang.InterruptedException

      All elements in the returned list must be `ListenableFuture` instances. The easiest way to obtain a `List<ListenableFuture<T>>` from this method is an unchecked (but safe) cast:

             @SuppressWarnings("unchecked") // guaranteed by invokeAll contract
             List<ListenableFuture<T>> futures = (List) executor.invokeAll(tasks);

      Specified by:
        `invokeAll` in interface `java.util.concurrent.ExecutorService`
      Returns:
        A list of `ListenableFuture` instances representing the tasks, in the same sequential order as produced by the iterator for the given task list, each of which has completed.
      Throws:
        `java.util.concurrent.RejectedExecutionException`
        `java.lang.NullPointerException` - if any task is null
        `java.lang.InterruptedException`

    - #### invokeAll

          <T> java.util.List<java.util.concurrent.Future<T>> invokeAll(java.util.Collection<? extends java.util.concurrent.Callable<T>> tasks,
                                                                     long timeout,
                                                                     java.util.concurrent.TimeUnit unit)
                                                                   throws java.lang.InterruptedException

      All elements in the returned list must be `ListenableFuture` instances. The easiest way to obtain a `List<ListenableFuture<T>>` from this method is an unchecked (but safe) cast:

             @SuppressWarnings("unchecked") // guaranteed by invokeAll contract
             List<ListenableFuture<T>> futures = (List) executor.invokeAll(tasks, timeout, unit);

      Specified by:
        `invokeAll` in interface `java.util.concurrent.ExecutorService`
      Returns:
        a list of `ListenableFuture` instances representing the tasks, in the same sequential order as produced by the iterator for the given task list. If the operation did not time out, each task will have completed. If it did time out, some of these tasks will not have completed.
      Throws:
        `java.util.concurrent.RejectedExecutionException`
        `java.lang.NullPointerException` - if any task is null
        `java.lang.InterruptedException`