Class WrappingExecutorService

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

    @GwtIncompatible
    abstract class WrappingExecutorService
    extends java.lang.Object
    implements java.util.concurrent.ExecutorService
    An abstract ExecutorService that allows subclasses to wrap tasks before they are submitted to the underlying executor.

    Note that task wrapping may occur even if the task is never executed.

    For delegation without task-wrapping, see ForwardingExecutorService.

    • Field Summary

      Fields 
      Modifier and Type Field Description
      private java.util.concurrent.ExecutorService delegate  
    • Constructor Summary

      Constructors 
      Modifier Constructor Description
      protected WrappingExecutorService​(java.util.concurrent.ExecutorService delegate)  
    • Method Summary

      All Methods Instance Methods Abstract Methods Concrete Methods 
      Modifier and Type Method Description
      boolean awaitTermination​(long timeout, java.util.concurrent.TimeUnit unit)  
      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()  
      java.util.concurrent.Future<?> submit​(java.lang.Runnable task)  
      <T> java.util.concurrent.Future<T> submit​(java.lang.Runnable task, T result)  
      <T> java.util.concurrent.Future<T> submit​(java.util.concurrent.Callable<T> task)  
      protected java.lang.Runnable wrapTask​(java.lang.Runnable command)
      Wraps a Runnable for submission to the underlying executor.
      protected abstract <T> java.util.concurrent.Callable<T> wrapTask​(java.util.concurrent.Callable<T> callable)
      Wraps a Callable for submission to the underlying executor.
      private <T> ImmutableList<java.util.concurrent.Callable<T>> wrapTasks​(java.util.Collection<? extends java.util.concurrent.Callable<T>> tasks)
      Wraps a collection of tasks.
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Field Detail

      • delegate

        private final java.util.concurrent.ExecutorService delegate
    • Constructor Detail

      • WrappingExecutorService

        protected WrappingExecutorService​(java.util.concurrent.ExecutorService delegate)
    • Method Detail

      • wrapTask

        protected abstract <T> java.util.concurrent.Callable<T> wrapTask​(java.util.concurrent.Callable<T> callable)
        Wraps a Callable for submission to the underlying executor. This method is also applied to any Runnable passed to the default implementation of wrapTask(Runnable).
      • wrapTask

        protected java.lang.Runnable wrapTask​(java.lang.Runnable command)
        Wraps a Runnable for submission to the underlying executor. The default implementation delegates to wrapTask(Callable).
      • wrapTasks

        private final <T> ImmutableList<java.util.concurrent.Callable<T>> wrapTasks​(java.util.Collection<? extends java.util.concurrent.Callable<T>> tasks)
        Wraps a collection of tasks.
        Throws:
        java.lang.NullPointerException - if any element of tasks is null
      • execute

        public final void execute​(java.lang.Runnable command)
        Specified by:
        execute in interface java.util.concurrent.Executor
      • submit

        public final <T> java.util.concurrent.Future<T> submit​(java.util.concurrent.Callable<T> task)
        Specified by:
        submit in interface java.util.concurrent.ExecutorService
      • submit

        public final java.util.concurrent.Future<?> submit​(java.lang.Runnable task)
        Specified by:
        submit in interface java.util.concurrent.ExecutorService
      • submit

        public final <T> java.util.concurrent.Future<T> submit​(java.lang.Runnable task,
                                                               T result)
        Specified by:
        submit in interface java.util.concurrent.ExecutorService
      • invokeAll

        public final <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 final <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 final <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 final <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
      • shutdown

        public final void shutdown()
        Specified by:
        shutdown in interface java.util.concurrent.ExecutorService
      • shutdownNow

        public final java.util.List<java.lang.Runnable> shutdownNow()
        Specified by:
        shutdownNow in interface java.util.concurrent.ExecutorService
      • isShutdown

        public final boolean isShutdown()
        Specified by:
        isShutdown in interface java.util.concurrent.ExecutorService
      • isTerminated

        public final boolean isTerminated()
        Specified by:
        isTerminated in interface java.util.concurrent.ExecutorService
      • awaitTermination

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