Package org.apache.catalina.core

# 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

## Nested Class Summary

### Nested classes/interfaces inherited from interface org.apache.catalina.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`
`protected int`
`threadPriority`
Default thread priority
`protected long`
`threadRenewalDelay`
After a context is stopped, threads in the pool are renewed.

### Fields inherited from interface org.apache.catalina.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()`

## Method Summary

Modifier and Type
Method
Description
`boolean`
`awaitTermination(long timeout, TimeUnit unit)`
`void`
`contextStopping()`
`void`
`execute(Runnable command)`
`int`
`getActiveCount()`
Returns the approximate number of threads that are actively executing tasks.
`long`
`getCompletedTaskCount()`
`int`
`getCorePoolSize()`
`protected String`
`getDomainInternal()`
Method implemented by sub-classes to identify the domain in which MBeans should be registered.
`int`
`getLargestPoolSize()`
`int`
`getMaxIdleTime()`
`int`
`getMaxQueueSize()`
`int`
`getMaxThreads()`
`int`
`getMinSpareThreads()`
`String`
`getName()`
`String`
`getNamePrefix()`
`protected String`
`getObjectNameKeyProperties()`
Allow sub-classes 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()`
`int`
`getThreadPriority()`
`long`
`getThreadRenewalDelay()`
`<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()`
`boolean`
`isShutdown()`
`boolean`
`isTerminated()`
`boolean`
`resizePool(int corePoolSize, int maximumPoolSize)`
`boolean`
`resizeQueue(int capacity)`
`void`
`setDaemon(boolean daemon)`
`void`
`setMaxIdleTime(int maxIdleTime)`
`void`
`setMaxQueueSize(int size)`
`void`
`setMaxThreads(int maxThreads)`
`void`
`setMinSpareThreads(int minSpareThreads)`
`void`
`setName(String name)`
`void`
`setNamePrefix(String namePrefix)`
`void`
`setThreadPriority(int threadPriority)`
`void`
`setThreadRenewalDelay(long threadRenewalDelay)`
`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 org.apache.catalina.util.LifecycleMBeanBase

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

### Methods inherited from class org.apache.catalina.util.LifecycleBase

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

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

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

### Methods inherited from interface java.util.concurrent.ExecutorService

`close`

### Methods inherited from interface org.apache.catalina.Lifecycle

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

## Field Details

### sm

protected static final StringManager sm

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

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

### getThreadPriority

public int getThreadPriority()

### isDaemon

public boolean isDaemon()

### getNamePrefix

public String getNamePrefix()

### getMaxIdleTime

public int getMaxIdleTime()

### getMaxThreads

public int getMaxThreads()

Specified by:
  `getMaxThreads` in interface `ResizableExecutor`

### getMinSpareThreads

public int getMinSpareThreads()

### getName

public String getName()

Specified by:
  `getName` in interface `Executor`

### setThreadPriority

public void setThreadPriority(int threadPriority)

### setDaemon

public void setDaemon(boolean daemon)

### setNamePrefix

public void setNamePrefix(String namePrefix)

### setMaxIdleTime

public void setMaxIdleTime(int maxIdleTime)

### setMaxThreads

public void setMaxThreads(int maxThreads)

### setMinSpareThreads

public void setMinSpareThreads(int minSpareThreads)

### setName

public void setName(String name)

### setMaxQueueSize

public void setMaxQueueSize(int size)

### getMaxQueueSize

public int getMaxQueueSize()

### getThreadRenewalDelay

public long getThreadRenewalDelay()

### setThreadRenewalDelay

public void setThreadRenewalDelay(long threadRenewalDelay)

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

### getCorePoolSize

public int getCorePoolSize()

### getLargestPoolSize

public int getLargestPoolSize()

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

### resizePool

public boolean resizePool(int corePoolSize, int maximumPoolSize)

Specified by:
  `resizePool` in interface `ResizableExecutor`

### resizeQueue

public boolean resizeQueue(int capacity)

Specified by:
  `resizeQueue` in interface `ResizableExecutor`

### getDomainInternal

protected String getDomainInternal()
Description copied from class: `LifecycleMBeanBase`
Method implemented by sub-classes 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 sub-classes 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`