Package org.apache.ignite.thread

## Class IgniteThreadPoolExecutor

- java.lang.Object
- - java.util.concurrent.AbstractExecutorService
  - - java.util.concurrent.ThreadPoolExecutor
    - - org.apache.ignite.thread.IgniteThreadPoolExecutor

- All Implemented Interfaces:
    `Executor`, `ExecutorService`, `org.apache.ignite.internal.processors.pool.MetricsAwareExecutorService`

      public class IgniteThreadPoolExecutor
      extends ThreadPoolExecutor
      implements org.apache.ignite.internal.processors.pool.MetricsAwareExecutorService

  An `ExecutorService` that executes submitted tasks using pooled grid threads.

- - ### Nested Class Summary

    - ### Nested classes/interfaces inherited from class java.util.concurrent.ThreadPoolExecutor

      `ThreadPoolExecutor.AbortPolicy, ThreadPoolExecutor.CallerRunsPolicy, ThreadPoolExecutor.DiscardOldestPolicy, ThreadPoolExecutor.DiscardPolicy`

  - ### Constructor Summary

    Constructors
    Modifier | Constructor | Description
    --- | --- | ---
    `` | `IgniteThreadPoolExecutor​(int corePoolSize, int maxPoolSize, long keepAliveTime, BlockingQueue<Runnable> workQ, ThreadFactory threadFactory)` | Creates a new service with the given initial parameters.
    `protected` | `IgniteThreadPoolExecutor​(int corePoolSize, int maxPoolSize, long keepAliveTime, BlockingQueue<Runnable> workQ, ThreadFactory threadFactory, @Nullable org.apache.ignite.internal.processors.metric.impl.HistogramMetricImpl execTime)` | Creates a new service with the given initial parameters.
    `` | `IgniteThreadPoolExecutor​(String threadNamePrefix, String igniteInstanceName, int corePoolSize, int maxPoolSize, long keepAliveTime, BlockingQueue<Runnable> workQ)` | Creates a new service with the given initial parameters.
    `` | `IgniteThreadPoolExecutor​(String threadNamePrefix, String igniteInstanceName, int corePoolSize, int maxPoolSize, long keepAliveTime, BlockingQueue<Runnable> workQ, byte plc, Thread.UncaughtExceptionHandler eHnd)` | Creates a new service with the given initial parameters.

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `protected void` | `afterExecute​(Runnable r, Throwable t)`
    `protected void` | `beforeExecute​(Thread t, Runnable r)`
    `protected void` | `executionTimeMetric​(org.apache.ignite.internal.processors.metric.impl.HistogramMetricImpl execTime)` |
    `void` | `registerMetrics​(org.apache.ignite.internal.processors.metric.MetricRegistryImpl mreg)` | Register thread pool metrics.

    - ### Methods inherited from class java.util.concurrent.ThreadPoolExecutor

      `allowCoreThreadTimeOut, allowsCoreThreadTimeOut, awaitTermination, execute, finalize, getActiveCount, getCompletedTaskCount, getCorePoolSize, getKeepAliveTime, getLargestPoolSize, getMaximumPoolSize, getPoolSize, getQueue, getRejectedExecutionHandler, getTaskCount, getThreadFactory, isShutdown, isTerminated, isTerminating, prestartAllCoreThreads, prestartCoreThread, purge, remove, setCorePoolSize, setKeepAliveTime, setMaximumPoolSize, setRejectedExecutionHandler, setThreadFactory, shutdown, shutdownNow, terminated, toString`

    - ### Methods inherited from class java.util.concurrent.AbstractExecutorService

      `invokeAll, invokeAll, invokeAny, invokeAny, newTaskFor, newTaskFor, submit, submit, submit`

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

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

- - ### Constructor Detail

    - #### IgniteThreadPoolExecutor

          public IgniteThreadPoolExecutor​(String threadNamePrefix,
                                          String igniteInstanceName,
                                          int corePoolSize,
                                          int maxPoolSize,
                                          long keepAliveTime,
                                          BlockingQueue<Runnable> workQ)

      Creates a new service with the given initial parameters. NOTE: There is a known bug. If 'corePoolSize' equals `0`, then the pool will degrade to a single-threaded pool.
      Parameters:
        `threadNamePrefix` - Will be added at the beginning of all created threads.
        `igniteInstanceName` - Must be the name of the grid.
        `corePoolSize` - The number of threads to keep in the pool, even if they are idle.
        `maxPoolSize` - The maximum number of threads to allow in the pool.
        `keepAliveTime` - When the number of threads is greater than the core, this is the maximum time that excess idle threads will wait for new tasks before terminating.
        `workQ` - The queue to use for holding tasks before they are executed. This queue will hold only runnable tasks submitted by the `ThreadPoolExecutor.execute(Runnable)` method.

    - #### IgniteThreadPoolExecutor

          public IgniteThreadPoolExecutor​(String threadNamePrefix,
                                          String igniteInstanceName,
                                          int corePoolSize,
                                          int maxPoolSize,
                                          long keepAliveTime,
                                          BlockingQueue<Runnable> workQ,
                                          byte plc,
                                          Thread.UncaughtExceptionHandler eHnd)

      Creates a new service with the given initial parameters. NOTE: There is a known bug. If 'corePoolSize' equals `0`, then the pool will degrade to a single-threaded pool.
      Parameters:
        `threadNamePrefix` - Will be added at the beginning of all created threads.
        `igniteInstanceName` - Must be the name of the grid.
        `corePoolSize` - The number of threads to keep in the pool, even if they are idle.
        `maxPoolSize` - The maximum number of threads to allow in the pool.
        `keepAliveTime` - When the number of threads is greater than the core, this is the maximum time that excess idle threads will wait for new tasks before terminating.
        `workQ` - The queue to use for holding tasks before they are executed. This queue will hold only runnable tasks submitted by the `ThreadPoolExecutor.execute(Runnable)` method.
        `plc` - `GridIoPolicy` for thread pool.
        `eHnd` - Uncaught exception handler for thread pool.

    - #### IgniteThreadPoolExecutor

          public IgniteThreadPoolExecutor​(int corePoolSize,
                                          int maxPoolSize,
                                          long keepAliveTime,
                                          BlockingQueue<Runnable> workQ,
                                          ThreadFactory threadFactory)

      Creates a new service with the given initial parameters. NOTE: There is a known bug. If 'corePoolSize' equals `0`, then the pool will degrade to a single-threaded pool. *
      Parameters:
        `corePoolSize` - The number of threads to keep in the pool, even if they are idle.
        `maxPoolSize` - The maximum number of threads to allow in the pool.
        `keepAliveTime` - When the number of threads is greater than the core, this is the maximum time that excess idle threads will wait for new tasks before terminating.
        `workQ` - The queue to use for holding tasks before they are executed. This queue will hold only the runnable tasks submitted by the `ThreadPoolExecutor.execute(Runnable)` method.
        `threadFactory` - Thread factory.

    - #### IgniteThreadPoolExecutor

          protected IgniteThreadPoolExecutor​(int corePoolSize,
                                             int maxPoolSize,
                                             long keepAliveTime,
                                             BlockingQueue<Runnable> workQ,
                                             ThreadFactory threadFactory,
                                             @Nullable
                                             @Nullable org.apache.ignite.internal.processors.metric.impl.HistogramMetricImpl execTime)

      Creates a new service with the given initial parameters. NOTE: There is a known bug. If 'corePoolSize' equals `0`, then the pool will degrade to a single-threaded pool.
      Parameters:
        `corePoolSize` - The number of threads to keep in the pool, even if they are idle.
        `maxPoolSize` - The maximum number of threads to allow in the pool.
        `keepAliveTime` - When the number of threads is greater than the core, this is the maximum time that excess idle threads will wait for new tasks before terminating.
        `workQ` - The queue to use for holding tasks before they are executed. This queue will hold only the runnable tasks submitted by the `ThreadPoolExecutor.execute(Runnable)` method.
        `threadFactory` - Thread factory.
        `execTime` - Task execution time metric.

  - ### Method Detail

    - #### beforeExecute

          protected void beforeExecute​(Thread t,
                                       Runnable r)

      Overrides:
        `beforeExecute` in class `ThreadPoolExecutor`

    - #### afterExecute

          protected void afterExecute​(Runnable r,
                                      Throwable t)

      Overrides:
        `afterExecute` in class `ThreadPoolExecutor`

    - #### registerMetrics

          public void registerMetrics​(org.apache.ignite.internal.processors.metric.MetricRegistryImpl mreg)

      Register thread pool metrics.
      Specified by:
        `registerMetrics` in interface `org.apache.ignite.internal.processors.pool.MetricsAwareExecutorService`
      Parameters:
        `mreg` - Metrics registry.

    - #### executionTimeMetric

          protected void executionTimeMetric​(org.apache.ignite.internal.processors.metric.impl.HistogramMetricImpl execTime)

      Parameters:
        `execTime` - Task execution time metric.