Class ForwardingExecutorService

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

    @GwtIncompatible
    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.

    default method warning: This class does not forward calls to default methods. Instead, it inherits their default implementations. When those implementations invoke methods, they invoke methods on the ForwardingExecutorService.

    Since:
    10.0
    Author:
    Kurt Alfred Kluever
    • Constructor Summary

      Constructors 
      Modifier Constructor Description
      protected ForwardingExecutorService()
      Constructor for use by subclasses.
    • Method Summary

      All Methods Instance Methods Abstract Methods Concrete Methods 
      Modifier and Type Method 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 extends @Nullable java.lang.Object>
      java.util.List<java.util.concurrent.Future<T>>
      invokeAll​(java.util.Collection<? extends java.util.concurrent.Callable<T>> tasks)  
      <T extends @Nullable java.lang.Object>
      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 extends @Nullable java.lang.Object>
      T
      invokeAny​(java.util.Collection<? extends java.util.concurrent.Callable<T>> tasks)  
      <T extends @Nullable java.lang.Object>
      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()  
      java.util.concurrent.Future<?> submit​(java.lang.Runnable task)  
      <T extends @Nullable java.lang.Object>
      java.util.concurrent.Future<T>
      submit​(java.lang.Runnable task, T result)  
      <T extends @Nullable java.lang.Object>
      java.util.concurrent.Future<T>
      submit​(java.util.concurrent.Callable<T> task)  
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
    • 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

        @CheckReturnValue
        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 extends @Nullable java.lang.Object> 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 extends @Nullable java.lang.Object> 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 extends @Nullable java.lang.Object> 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 extends @Nullable java.lang.Object> 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

        @CanIgnoreReturnValue
        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 extends @Nullable java.lang.Object> 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 extends @Nullable java.lang.Object> java.util.concurrent.Future<T> submit​(java.lang.Runnable task,
                                                                                            T result)
        Specified by:
        submit in interface java.util.concurrent.ExecutorService