Package org.jboss.resteasy.concurrent

## Class ContextualExecutorService

- java.lang.Object
- - org.jboss.resteasy.concurrent.ContextualExecutorService

- All Implemented Interfaces:
    `Executor`, `ExecutorService`
  Direct Known Subclasses:
    `ContextualScheduledExecutorService`

      public class ContextualExecutorService
      extends Object
      implements ExecutorService

  An executor which wraps runnables and callables to capture the context of the current thread.

  If a server is managed it's the responsibility of the user or container to manage the lifecycle of the wrapped executor service.

  Note: if the executor is consider managed, for example running in a Jakarta EE environment, the following methods are effectively ignored.

  - `shutdown()`
  - `shutdownNow()`
  - `isShutdown()`
  - `isTerminated()`
  - `awaitTermination(long, TimeUnit)`
  Since:
    5.0.0
  Author:
    James R. Perkins

- - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `boolean` | `awaitTermination​(long timeout, TimeUnit unit)` |
    `void` | `execute​(Runnable command)` |
    `<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` | `isManaged()` | Indicates this executor is managed and the following methods are not executed.
    `boolean` | `isShutdown()` |
    `boolean` | `isTerminated()` |
    `void` | `shutdown()` |
    `List<Runnable>` | `shutdownNow()` |
    `Future<?>` | `submit​(Runnable task)` |
    `<T> Future<T>` | `submit​(Runnable task, T result)` |
    `<T> Future<T>` | `submit​(Callable<T> task)` |

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

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

- - ### Method Detail

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

    - #### execute

          public void execute​(Runnable command)

      Specified by:
        `execute` in interface `Executor`

    - #### isManaged

          public boolean isManaged()

      Indicates this executor is managed and the following methods are not executed. If the method has a return type a default value is returned.
      - `shutdown()`
      - `shutdownNow()`
      - `isShutdown()`
      - `isTerminated()`
      - `awaitTermination(long, TimeUnit)`
      Returns:
        `true` if this is a managed executor, otherwise `false`