Class StandardThreadExecutor

All Implemented Interfaces:
AutoCloseable, Executor, ExecutorService, MBeanRegistration, Executor, JmxEnabled, Lifecycle, ResizableExecutor

public class StandardThreadExecutor extends LifecycleMBeanBase implements Executor, ExecutorService, ResizableExecutor
Standard implementation of an Executor based on a Java thread pool.
  • Field Details

    • sm

      protected static final StringManager sm
      StringManager for this package.
    • threadPriority

      protected int threadPriority
      Default thread priority
    • daemon

      protected boolean daemon
      Run threads in daemon or non-daemon state
    • namePrefix

      protected String namePrefix
      Default name prefix for the thread name
    • maxThreads

      protected int maxThreads
      max number of threads
    • minSpareThreads

      protected int minSpareThreads
      min number of threads
    • maxIdleTime

      protected int maxIdleTime
      idle time in milliseconds
    • executor

      protected ThreadPoolExecutor executor
      The executor we use for this component
    • name

      protected String name
      the name of this thread pool
    • maxQueueSize

      protected int maxQueueSize
      The maximum number of elements that can queue up before we reject them
    • threadRenewalDelay

      protected long threadRenewalDelay
      After a context is stopped, threads in the pool are renewed. To avoid renewing all threads at the same time, this delay is observed between 2 threads being renewed.
  • Constructor Details

    • StandardThreadExecutor

      public StandardThreadExecutor()
      Default constructor required for the Digester.
  • Method Details

    • startInternal

      protected void startInternal() throws LifecycleException
      Start the component and implement the requirements of LifecycleBase.startInternal().
      Specified by:
      startInternal in class LifecycleBase
      Throws:
      LifecycleException - if this component detects a fatal error that prevents this component from being used
    • stopInternal

      protected void stopInternal() throws LifecycleException
      Stop the component and implement the requirements of LifecycleBase.stopInternal().
      Specified by:
      stopInternal in class LifecycleBase
      Throws:
      LifecycleException - if this component detects a fatal error that needs to be reported
    • execute

      @Deprecated public void execute(Runnable command, long timeout, TimeUnit unit)
      Deprecated.
      Description copied from interface: Executor
      Executes the given command at some time in the future. The command may execute in a new thread, in a pooled thread, or in the calling thread, at the discretion of the Executor implementation. If no threads are available, it will be added to the work queue. If the work queue is full, the system will wait for the specified time until it throws a RejectedExecutionException
      Specified by:
      execute in interface Executor
      Parameters:
      command - the runnable task
      timeout - the length of time to wait for the task to complete
      unit - the units in which timeout is expressed
    • execute

      public void execute(Runnable command)
      Specified by:
      execute in interface Executor
    • contextStopping

      public void contextStopping()
      Notify the underlying executor that the associated context is stopping so that it can prepare for shutdown.
    • getThreadPriority

      public int getThreadPriority()
      Return the thread priority for new threads.
      Returns:
      the thread priority
    • isDaemon

      public boolean isDaemon()
      Return whether threads are daemon threads.
      Returns:
      true if threads are daemon threads
    • getNamePrefix

      public String getNamePrefix()
      Return the name prefix for new threads.
      Returns:
      the name prefix
    • getMaxIdleTime

      public int getMaxIdleTime()
      Return the maximum idle time in milliseconds.
      Returns:
      the maximum idle time in milliseconds
    • getMaxThreads

      public int getMaxThreads()
      Description copied from interface: ResizableExecutor
      Returns the maximum number of threads in the pool.
      Specified by:
      getMaxThreads in interface ResizableExecutor
      Returns:
      the maximum number of threads
    • getMinSpareThreads

      public int getMinSpareThreads()
      Return the minimum number of spare threads.
      Returns:
      the minimum spare threads
    • getName

      public String getName()
      Description copied from interface: Executor
      Returns the name of this executor.
      Specified by:
      getName in interface Executor
      Returns:
      the executor name
    • setThreadPriority

      public void setThreadPriority(int threadPriority)
      Set the thread priority for new threads.
      Parameters:
      threadPriority - the thread priority
    • setDaemon

      public void setDaemon(boolean daemon)
      Set whether threads are daemon threads.
      Parameters:
      daemon - true for daemon threads
    • setNamePrefix

      public void setNamePrefix(String namePrefix)
      Set the name prefix for new threads.
      Parameters:
      namePrefix - the name prefix
    • setMaxIdleTime

      public void setMaxIdleTime(int maxIdleTime)
      Set the maximum idle time in milliseconds.
      Parameters:
      maxIdleTime - the maximum idle time
    • setMaxThreads

      public void setMaxThreads(int maxThreads)
      Set the maximum number of threads in the pool.
      Parameters:
      maxThreads - the maximum threads
    • setMinSpareThreads

      public void setMinSpareThreads(int minSpareThreads)
      Set the minimum number of spare threads.
      Parameters:
      minSpareThreads - the minimum spare threads
    • setName

      public void setName(String name)
      Set the name for this executor.
      Parameters:
      name - the executor name
    • setMaxQueueSize

      public void setMaxQueueSize(int size)
      Set the maximum queue size.
      Parameters:
      size - the maximum queue size
    • getMaxQueueSize

      public int getMaxQueueSize()
      Return the maximum number of elements that can queue up before tasks are rejected.
      Returns:
      the maximum queue size
    • getThreadRenewalDelay

      public long getThreadRenewalDelay()
      Return the thread renewal delay in milliseconds.
      Returns:
      the thread renewal delay
    • setThreadRenewalDelay

      public void setThreadRenewalDelay(long threadRenewalDelay)
      Set the thread renewal delay in milliseconds.
      Parameters:
      threadRenewalDelay - the thread renewal delay
    • getActiveCount

      public int getActiveCount()
      Description copied from interface: ResizableExecutor
      Returns the approximate number of threads that are actively executing tasks.
      Specified by:
      getActiveCount in interface ResizableExecutor
      Returns:
      the number of threads
    • getCompletedTaskCount

      public long getCompletedTaskCount()
      Return the approximate total number of tasks that have completed execution.
      Returns:
      the completed task count
    • getCorePoolSize

      public int getCorePoolSize()
      Return the core number of threads for the underlying thread pool.
      Returns:
      the core pool size
    • getLargestPoolSize

      public int getLargestPoolSize()
      Return the largest number of threads that have ever simultaneously been in the pool.
      Returns:
      the largest pool size
    • getPoolSize

      public int getPoolSize()
      Description copied from interface: ResizableExecutor
      Returns the current number of threads in the pool.
      Specified by:
      getPoolSize in interface ResizableExecutor
      Returns:
      the number of threads
    • getQueueSize

      public int getQueueSize()
      Return the current queue size.
      Returns:
      the queue size, or -1 if not available
    • resizePool

      public boolean resizePool(int corePoolSize, int maximumPoolSize)
      Description copied from interface: ResizableExecutor
      Resize the thread pool.
      Specified by:
      resizePool in interface ResizableExecutor
      Parameters:
      corePoolSize - The new core pool size
      maximumPoolSize - The new maximum pool size
      Returns:
      True if the pool was resized successfully
    • resizeQueue

      public boolean resizeQueue(int capacity)
      Description copied from interface: ResizableExecutor
      Resize the work queue.
      Specified by:
      resizeQueue in interface ResizableExecutor
      Parameters:
      capacity - The new queue capacity
      Returns:
      True if the queue was resized successfully
    • getDomainInternal

      protected String getDomainInternal()
      Description copied from class: LifecycleMBeanBase
      Method implemented by subclasses to identify the domain in which MBeans should be registered.
      Specified by:
      getDomainInternal in class LifecycleMBeanBase
      Returns:
      The name of the domain to use to register MBeans.
    • getObjectNameKeyProperties

      protected String getObjectNameKeyProperties()
      Description copied from class: LifecycleMBeanBase
      Allow subclasses to specify the key properties component of the ObjectName that will be used to register this component.
      Specified by:
      getObjectNameKeyProperties in class LifecycleMBeanBase
      Returns:
      The string representation of the key properties component of the desired ObjectName
    • shutdown

      public void shutdown()
      Specified by:
      shutdown in interface ExecutorService
    • shutdownNow

      public List<Runnable> shutdownNow()
      Specified by:
      shutdownNow in interface ExecutorService
    • isShutdown

      public boolean isShutdown()
      Specified by:
      isShutdown in interface ExecutorService
    • isTerminated

      public boolean isTerminated()
      Specified by:
      isTerminated in interface ExecutorService
    • awaitTermination

      public boolean awaitTermination(long timeout, TimeUnit unit) throws InterruptedException
      Specified by:
      awaitTermination in interface ExecutorService
      Throws:
      InterruptedException
    • submit

      public <T> Future<T> submit(Callable<T> task)
      Specified by:
      submit in interface ExecutorService
    • submit

      public <T> Future<T> submit(Runnable task, T result)
      Specified by:
      submit in interface ExecutorService
    • submit

      public Future<?> submit(Runnable task)
      Specified by:
      submit in interface ExecutorService
    • invokeAll

      public <T> List<Future<T>> invokeAll(Collection<? extends Callable<T>> tasks) throws InterruptedException
      Specified by:
      invokeAll in interface ExecutorService
      Throws:
      InterruptedException
    • invokeAll

      public <T> List<Future<T>> invokeAll(Collection<? extends Callable<T>> tasks, long timeout, TimeUnit unit) throws InterruptedException
      Specified by:
      invokeAll in interface ExecutorService
      Throws:
      InterruptedException
    • invokeAny

      public <T> T invokeAny(Collection<? extends Callable<T>> tasks) throws InterruptedException, ExecutionException
      Specified by:
      invokeAny in interface ExecutorService
      Throws:
      InterruptedException
      ExecutionException
    • invokeAny

      public <T> T invokeAny(Collection<? extends Callable<T>> tasks, long timeout, TimeUnit unit) throws InterruptedException, ExecutionException, TimeoutException
      Specified by:
      invokeAny in interface ExecutorService
      Throws:
      InterruptedException
      ExecutionException
      TimeoutException