Package org.apache.catalina.core

# Class StandardVirtualThreadExecutor

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

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

public class StandardVirtualThreadExecutor extends LifecycleMBeanBase implements Executor, ExecutorService
An executor that uses a new virtual thread for each task.

## Nested Class Summary

## Nested classes/interfaces inherited from interface org.apache.catalina.Lifecycle

`Lifecycle.SingleUse`

## Field Summary

### Fields inherited from class org.apache.catalina.util.LifecycleMBeanBase

`mserver`

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

## Method Summary

Modifier and Type
Method
Description
`boolean`
`awaitTermination(long timeout, TimeUnit unit)`
`void`
`execute(Runnable command)`
`void`
`execute(Runnable command, long timeout, TimeUnit unit)`
Executes the given command at some time in the future.
`protected String`
`getDomainInternal()`
Method implemented by sub-classes to identify the domain in which MBeans should be registered.
`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.
`protected void`
`initInternal()`
Sub-classes wishing to perform additional initialization should override this method, ensuring that super.initInternal() is the first call in the overriding method.
`<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`
`isShutdown()`
`boolean`
`isTerminated()`
`void`
`setName(String name)`
`void`
`setNamePrefix(String namePrefix)`
`void`
`shutdown()`
`List<Runnable>`
`shutdownNow()`
`protected void`
`startInternal()`
Sub-classes must ensure that the state is changed to `LifecycleState.STARTING` during the execution of this method.
`protected void`
`stopInternal()`
Sub-classes must ensure that the state is changed to `LifecycleState.STOPPING` during the execution of this method.
`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, 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 org.apache.catalina.Lifecycle

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

## Constructor Details

### StandardVirtualThreadExecutor

public StandardVirtualThreadExecutor()

## Method Details

### setName

public void setName(String name)

### getName

public String getName()

Specified by:
  `getName` in interface `Executor`

### getNamePrefix

public String getNamePrefix()

### setNamePrefix

public void setNamePrefix(String namePrefix)

### execute

public void execute(Runnable command)

Specified by:
  `execute` in interface `Executor`

### execute

public void execute(Runnable command, long timeout, TimeUnit unit)
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

### initInternal

protected void initInternal() throws LifecycleException
Description copied from class: `LifecycleMBeanBase`
Sub-classes wishing to perform additional initialization should override this method, ensuring that super.initInternal() is the first call in the overriding method.

Overrides:
  `initInternal` in class `LifecycleMBeanBase`
Throws:
  `LifecycleException` - If the initialisation fails

### startInternal

protected void startInternal() throws LifecycleException
Description copied from class: `LifecycleBase`
Sub-classes must ensure that the state is changed to `LifecycleState.STARTING` during the execution of this method. Changing state will trigger the `Lifecycle.START_EVENT` event. If a component fails to start it may either throw a `LifecycleException` which will cause it's parent to fail to start or it can place itself in the error state in which case `LifecycleBase.stop()` will be called on the failed component but the parent component will continue to start normally.

Specified by:
  `startInternal` in class `LifecycleBase`
Throws:
  `LifecycleException` - Start error occurred

### stopInternal

protected void stopInternal() throws LifecycleException
Description copied from class: `LifecycleBase`
Sub-classes must ensure that the state is changed to `LifecycleState.STOPPING` during the execution of this method. Changing state will trigger the `Lifecycle.STOP_EVENT` event.

Specified by:
  `stopInternal` in class `LifecycleBase`
Throws:
  `LifecycleException` - Stop error occurred

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