Package org.apache.tomcat.util.threads

## Class ScheduledThreadPoolExecutor

- java.lang.Object
- - org.apache.tomcat.util.threads.ScheduledThreadPoolExecutor

All Implemented Interfaces:
  `java.util.concurrent.Executor`, `java.util.concurrent.ExecutorService`, `java.util.concurrent.ScheduledExecutorService`

    public class ScheduledThreadPoolExecutor
    extends java.lang.Object
    implements java.util.concurrent.ScheduledExecutorService

Class which wraps a ScheduledExecutorService, while preventing lifecycle and configuration operations.

### Field Summary

Fields
`protected java.util.concurrent.ScheduledExecutorService` `executor`

### Constructor Summary

Constructors
`ScheduledThreadPoolExecutor​(java.util.concurrent.ScheduledExecutorService executor)` Builds a wrapper for the given executor.

### Method Summary

All Methods Instance Methods Concrete Methods
`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()`
`java.util.concurrent.ScheduledFuture<?>` `schedule​(java.lang.Runnable command, long delay, java.util.concurrent.TimeUnit unit)`
`<V> java.util.concurrent.ScheduledFuture<V>` `schedule​(java.util.concurrent.Callable<V> callable, long delay, java.util.concurrent.TimeUnit unit)`
`java.util.concurrent.ScheduledFuture<?>` `scheduleAtFixedRate​(java.lang.Runnable command, long initialDelay, long period, java.util.concurrent.TimeUnit unit)`
`java.util.concurrent.ScheduledFuture<?>` `scheduleWithFixedDelay​(java.lang.Runnable command, long initialDelay, long delay, java.util.concurrent.TimeUnit unit)`
`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)`

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

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

### Field Detail

#### executor

    protected final java.util.concurrent.ScheduledExecutorService executor

### Constructor Detail

#### ScheduledThreadPoolExecutor

    public ScheduledThreadPoolExecutor​(java.util.concurrent.ScheduledExecutorService executor)

Builds a wrapper for the given executor.

Parameters:
  `executor` - the wrapped executor

### Method Detail

#### shutdown

    public void shutdown()

Specified by:
  `shutdown` in interface `java.util.concurrent.ExecutorService`

#### shutdownNow

    public java.util.List<java.lang.Runnable> shutdownNow()

Specified by:
  `shutdownNow` in interface `java.util.concurrent.ExecutorService`

#### isShutdown

    public boolean isShutdown()

Specified by:
  `isShutdown` in interface `java.util.concurrent.ExecutorService`

#### isTerminated

    public boolean isTerminated()

Specified by:
  `isTerminated` in interface `java.util.concurrent.ExecutorService`

#### awaitTermination

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

#### submit

    public <T> java.util.concurrent.Future<T> submit​(java.util.concurrent.Callable<T> task)

Specified by:
  `submit` in interface `java.util.concurrent.ExecutorService`

#### submit

    public <T> java.util.concurrent.Future<T> submit​(java.lang.Runnable task,
                                                     T result)

Specified by:
  `submit` in interface `java.util.concurrent.ExecutorService`

#### submit

    public java.util.concurrent.Future<?> submit​(java.lang.Runnable task)

Specified by:
  `submit` in interface `java.util.concurrent.ExecutorService`

#### invokeAll

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

#### execute

    public void execute​(java.lang.Runnable command)

Specified by:
  `execute` in interface `java.util.concurrent.Executor`

#### schedule

    public java.util.concurrent.ScheduledFuture<?> schedule​(java.lang.Runnable command,
                                                            long delay,
                                                            java.util.concurrent.TimeUnit unit)

Specified by:
  `schedule` in interface `java.util.concurrent.ScheduledExecutorService`

#### schedule

    public <V> java.util.concurrent.ScheduledFuture<V> schedule​(java.util.concurrent.Callable<V> callable,
                                                                long delay,
                                                                java.util.concurrent.TimeUnit unit)

Specified by:
  `schedule` in interface `java.util.concurrent.ScheduledExecutorService`

#### scheduleAtFixedRate

    public java.util.concurrent.ScheduledFuture<?> scheduleAtFixedRate​(java.lang.Runnable command,
                                                                       long initialDelay,
                                                                       long period,
                                                                       java.util.concurrent.TimeUnit unit)

Specified by:
  `scheduleAtFixedRate` in interface `java.util.concurrent.ScheduledExecutorService`

#### scheduleWithFixedDelay

    public java.util.concurrent.ScheduledFuture<?> scheduleWithFixedDelay​(java.lang.Runnable command,
                                                                          long initialDelay,
                                                                          long delay,
                                                                          java.util.concurrent.TimeUnit unit)

Specified by:
  `scheduleWithFixedDelay` in interface `java.util.concurrent.ScheduledExecutorService`