com.google.common.util.concurrent

## Class ForwardingExecutorService

- java.lang.Object
- - com.google.common.collect.ForwardingObject
  - - com.google.common.util.concurrent.ForwardingExecutorService

- All Implemented Interfaces:
    java.util.concurrent.Executor, java.util.concurrent.ExecutorService
  Direct Known Subclasses:
    ForwardingListeningExecutorService

      public abstract class ForwardingExecutorService
      extends ForwardingObject
      implements java.util.concurrent.ExecutorService

  An executor service which forwards all its method calls to another executor service. Subclasses should override one or more methods to modify the behavior of the backing executor service as desired per the decorator pattern.
  Since:
    10.0

- - ### Constructor Summary

    Constructors
    Modifier | Constructor and Description
    --- | ---
    `protected` | `ForwardingExecutorService()` Constructor for use by subclasses.

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `boolean` | `awaitTermination(long timeout, java.util.concurrent.TimeUnit unit)`
    `protected abstract java.util.concurrent.ExecutorService` | `delegate()` Returns the backing delegate instance that methods are forwarded to.
    `void` | `execute(java.lang.Runnable command)`
    `<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> T` | `invokeAny(java.util.Collection<? extends java.util.concurrent.Callable<T>> tasks)`
    `<T> T` | `invokeAny(java.util.Collection<? extends java.util.concurrent.Callable<T>> tasks, long timeout, java.util.concurrent.TimeUnit unit)`
    `boolean` | `isShutdown()`
    `boolean` | `isTerminated()`
    `void` | `shutdown()`
    `java.util.List<java.lang.Runnable>` | `shutdownNow()`
    `<T> java.util.concurrent.Future<T>` | `submit(java.util.concurrent.Callable<T> task)`
    `java.util.concurrent.Future<?>` | `submit(java.lang.Runnable task)`
    `<T> java.util.concurrent.Future<T>` | `submit(java.lang.Runnable task, T result)`

    - ### Methods inherited from class com.google.common.collect.ForwardingObject

      `toString`

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait`

- - ### Constructor Detail

    - #### ForwardingExecutorService

          protected ForwardingExecutorService()

      Constructor for use by subclasses.

  - ### Method Detail

    - #### delegate

          protected abstract java.util.concurrent.ExecutorService delegate()

      Description copied from class: `ForwardingObject`
      Returns the backing delegate instance that methods are forwarded to. Abstract subclasses generally override this method with an abstract method that has a more specific return type, such as `ForwardingSet.delegate()`. Concrete subclasses override this method to supply the instance being decorated.
      Specified by:
        `delegate` in class `ForwardingObject`

    - #### awaitTermination

          public boolean awaitTermination(long timeout,
                                 java.util.concurrent.TimeUnit unit)
                                   throws java.lang.InterruptedException

      Specified by:
        `awaitTermination` in interface `java.util.concurrent.ExecutorService`
      Throws:
        `java.lang.InterruptedException`

    - #### invokeAll

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

      Specified by:
        `invokeAll` in interface `java.util.concurrent.ExecutorService`
      Throws:
        `java.lang.InterruptedException`

    - #### invokeAll

          public <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

      Specified by:
        `invokeAll` in interface `java.util.concurrent.ExecutorService`
      Throws:
        `java.lang.InterruptedException`

    - #### invokeAny

          public <T> T invokeAny(java.util.Collection<? extends java.util.concurrent.Callable<T>> tasks)
                      throws java.lang.InterruptedException,
                             java.util.concurrent.ExecutionException

      Specified by:
        `invokeAny` in interface `java.util.concurrent.ExecutorService`
      Throws:
        `java.lang.InterruptedException`
        `java.util.concurrent.ExecutionException`

    - #### invokeAny

          public <T> T invokeAny(java.util.Collection<? extends java.util.concurrent.Callable<T>> tasks,
                        long timeout,
                        java.util.concurrent.TimeUnit unit)
                      throws java.lang.InterruptedException,
                             java.util.concurrent.ExecutionException,
                             java.util.concurrent.TimeoutException

      Specified by:
        `invokeAny` in interface `java.util.concurrent.ExecutorService`
      Throws:
        `java.lang.InterruptedException`
        `java.util.concurrent.ExecutionException`
        `java.util.concurrent.TimeoutException`

    - #### isShutdown

          public boolean isShutdown()

      Specified by:
        `isShutdown` in interface `java.util.concurrent.ExecutorService`

    - #### isTerminated

          public boolean isTerminated()

      Specified by:
        `isTerminated` in interface `java.util.concurrent.ExecutorService`

    - #### shutdown

          public void shutdown()

      Specified by:
        `shutdown` in interface `java.util.concurrent.ExecutorService`

    - #### shutdownNow

          public java.util.List<java.lang.Runnable> shutdownNow()

      Specified by:
        `shutdownNow` in interface `java.util.concurrent.ExecutorService`

    - #### execute

          public void execute(java.lang.Runnable command)

      Specified by:
        `execute` in interface `java.util.concurrent.Executor`

    - #### submit

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

      Specified by:
        `submit` in interface `java.util.concurrent.ExecutorService`

    - #### submit

          public java.util.concurrent.Future<?> submit(java.lang.Runnable task)

      Specified by:
        `submit` in interface `java.util.concurrent.ExecutorService`

    - #### submit

          public <T> java.util.concurrent.Future<T> submit(java.lang.Runnable task,
                                                  T result)

      Specified by:
        `submit` in interface `java.util.concurrent.ExecutorService`