StandardThreadExecutor (Apache Tomcat 11.0.24 API Documentation)
Description: declaration: package: org.apache.catalina.core, class: StandardThreadExecutor

# Class StandardThreadExecutor

java.lang.Object
org.apache.catalina.util.LifecycleBase
org.apache.catalina.util.LifecycleMBeanBase
org.apache.catalina.core.StandardThreadExecutor

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

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

- ## Nested Class Summary

  ### Nested classes/interfaces inherited from interface Lifecycle

  `Lifecycle.SingleUse`

- ## Field Summary

  Fields
  Modifier and Type
  Field
  Description
  `protected boolean`
  `daemon`
  Run threads in daemon or non-daemon state
  `protected ThreadPoolExecutor`
  `executor`
  The executor we use for this component
  `protected int`
  `maxIdleTime`
  idle time in milliseconds
  `protected int`
  `maxQueueSize`
  The maximum number of elements that can queue up before we reject them
  `protected int`
  `maxThreads`
  max number of threads
  `protected int`
  `minSpareThreads`
  min number of threads
  `protected String`
  `name`
  the name of this thread pool
  `protected String`
  `namePrefix`
  Default name prefix for the thread name
  `protected static final StringManager`
  `sm`
  StringManager for this package.
  `protected int`
  `threadPriority`
  Default thread priority
  `protected long`
  `threadRenewalDelay`
  After a context is stopped, threads in the pool are renewed.

  ### Fields inherited from interface Lifecycle

  `AFTER_DESTROY_EVENT, AFTER_INIT_EVENT, AFTER_START_EVENT, AFTER_STOP_EVENT, BEFORE_DESTROY_EVENT, BEFORE_INIT_EVENT, BEFORE_START_EVENT, BEFORE_STOP_EVENT, CONFIGURE_START_EVENT, CONFIGURE_STOP_EVENT, PERIODIC_EVENT, START_EVENT, STOP_EVENT`

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `StandardThreadExecutor()`
  Default constructor required for the Digester.

- ## Method Summary

  Modifier and Type
  Method
  Description
  `boolean`
  `awaitTermination(long timeout, TimeUnit unit)`
  `void`
  `contextStopping()`
  Notify the underlying executor that the associated context is stopping so that it can prepare for shutdown.
  `void`
  `execute(Runnable command)`
  `int`
  `getActiveCount()`
  Returns the approximate number of threads that are actively executing tasks.
  `long`
  `getCompletedTaskCount()`
  Return the approximate total number of tasks that have completed execution.
  `int`
  `getCorePoolSize()`
  Return the core number of threads for the underlying thread pool.
  `protected String`
  `getDomainInternal()`
  Method implemented by subclasses to identify the domain in which MBeans should be registered.
  `int`
  `getLargestPoolSize()`
  Return the largest number of threads that have ever simultaneously been in the pool.
  `int`
  `getMaxIdleTime()`
  Return the maximum idle time in milliseconds.
  `int`
  `getMaxQueueSize()`
  Return the maximum number of elements that can queue up before tasks are rejected.
  `int`
  `getMaxThreads()`
  Returns the maximum number of threads in the pool.
  `int`
  `getMinSpareThreads()`
  Return the minimum number of spare threads.
  `String`
  `getName()`
  Returns the name of this executor.
  `String`
  `getNamePrefix()`
  Return the name prefix for new threads.
  `protected String`
  `getObjectNameKeyProperties()`
  Allow subclasses to specify the key properties component of the `ObjectName` that will be used to register this component.
  `int`
  `getPoolSize()`
  Returns the current number of threads in the pool.
  `int`
  `getQueueSize()`
  Return the current queue size.
  `int`
  `getThreadPriority()`
  Return the thread priority for new threads.
  `long`
  `getThreadRenewalDelay()`
  Return the thread renewal delay in milliseconds.
  `<T> List<Future<T>>`
  `invokeAll(Collection<? extends Callable<T>> tasks)`
  `<T> List<Future<T>>`
  `invokeAll(Collection<? extends Callable<T>> tasks, long timeout, TimeUnit unit)`
  `<T> T`
  `invokeAny(Collection<? extends Callable<T>> tasks)`
  `<T> T`
  `invokeAny(Collection<? extends Callable<T>> tasks, long timeout, TimeUnit unit)`
  `boolean`
  `isDaemon()`
  Return whether threads are daemon threads.
  `boolean`
  `isShutdown()`
  `boolean`
  `isTerminated()`
  `boolean`
  `resizePool(int corePoolSize, int maximumPoolSize)`
  Resize the thread pool.
  `boolean`
  `resizeQueue(int capacity)`
  Resize the work queue.
  `void`
  `setDaemon(boolean daemon)`
  Set whether threads are daemon threads.
  `void`
  `setMaxIdleTime(int maxIdleTime)`
  Set the maximum idle time in milliseconds.
  `void`
  `setMaxQueueSize(int size)`
  Set the maximum queue size.
  `void`
  `setMaxThreads(int maxThreads)`
  Set the maximum number of threads in the pool.
  `void`
  `setMinSpareThreads(int minSpareThreads)`
  Set the minimum number of spare threads.
  `void`
  `setName(String name)`
  Set the name for this executor.
  `void`
  `setNamePrefix(String namePrefix)`
  Set the name prefix for new threads.
  `void`
  `setThreadPriority(int threadPriority)`
  Set the thread priority for new threads.
  `void`
  `setThreadRenewalDelay(long threadRenewalDelay)`
  Set the thread renewal delay in milliseconds.
  `void`
  `shutdown()`
  `List<Runnable>`
  `shutdownNow()`
  `protected void`
  `startInternal()`
  Start the component and implement the requirements of `LifecycleBase.startInternal()`.
  `protected void`
  `stopInternal()`
  Stop the component and implement the requirements of `LifecycleBase.stopInternal()`.
  `Future<?>`
  `submit(Runnable task)`
  `<T> Future<T>`
  `submit(Runnable task, T result)`
  `<T> Future<T>`
  `submit(Callable<T> task)`

  ### Methods inherited from class LifecycleMBeanBase

  `destroyInternal, getDomain, getObjectName, initInternal, postDeregister, postRegister, preDeregister, preRegister, register, setDomain, unregister, unregister`

  ### Methods inherited from class LifecycleBase

  `addLifecycleListener, destroy, findLifecycleListeners, fireLifecycleEvent, getState, getStateName, getThrowOnFailure, init, removeLifecycleListener, setState, setState, setThrowOnFailure, start, stop`

  ### Methods inherited from class Object

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

  ### Methods inherited from interface ExecutorService

  `close`

  ### Methods inherited from interface Lifecycle

  `addLifecycleListener, destroy, findLifecycleListeners, getState, getStateName, init, removeLifecycleListener, start, stop`

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

    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`