Class ThreadPool

java.lang.Object
org.elasticsearch.threadpool.ThreadPool
All Implemented Interfaces:
ReportingService<ThreadPoolInfo>, Scheduler

public class ThreadPool extends Object implements ReportingService<ThreadPoolInfo>, Scheduler
  • Field Details

    • THREAD_POOL_TYPES

      public static final Map<String,ThreadPool.ThreadPoolType> THREAD_POOL_TYPES
    • ESTIMATED_TIME_INTERVAL_SETTING

      public static final Setting<TimeValue> ESTIMATED_TIME_INTERVAL_SETTING
    • LATE_TIME_INTERVAL_WARN_THRESHOLD_SETTING

      public static final Setting<TimeValue> LATE_TIME_INTERVAL_WARN_THRESHOLD_SETTING
    • SLOW_SCHEDULER_TASK_WARN_THRESHOLD_SETTING

      public static final Setting<TimeValue> SLOW_SCHEDULER_TASK_WARN_THRESHOLD_SETTING
  • Constructor Details

  • Method Details

    • builders

      public Collection<ExecutorBuilder> builders()
    • relativeTimeInMillis

      public long relativeTimeInMillis()
      Returns a value of milliseconds that may be used for relative time calculations. This method should only be used for calculating time deltas. For an epoch based timestamp, see absoluteTimeInMillis().
    • relativeTimeInNanos

      public long relativeTimeInNanos()
      Returns a value of nanoseconds that may be used for relative time calculations. This method should only be used for calculating time deltas. For an epoch based timestamp, see absoluteTimeInMillis().
    • rawRelativeTimeInMillis

      public long rawRelativeTimeInMillis()
      Returns a value of milliseconds that may be used for relative time calculations. Similar to relativeTimeInMillis() except that this method is more expensive: the return value is computed directly from System.nanoTime() and is not cached. You should use relativeTimeInMillis() unless the extra accuracy offered by this method is worth the costs. When computing a time interval by comparing relative times in milliseconds, you should make sure that both endpoints use cached values returned from relativeTimeInMillis() or that they both use raw values returned from this method. It doesn't really make sense to compare a raw value to a cached value, even if in practice the result of such a comparison will be approximately sensible.
    • absoluteTimeInMillis

      public long absoluteTimeInMillis()
      Returns the value of milliseconds since UNIX epoch. This method should only be used for exact date/time formatting. For calculating time deltas that should not suffer from negative deltas, which are possible with this method, see relativeTimeInMillis().
    • info

      public ThreadPoolInfo info()
      Specified by:
      info in interface ReportingService<ThreadPoolInfo>
    • info

      public ThreadPool.Info info(String name)
    • stats

      public ThreadPoolStats stats()
    • generic

      public ExecutorService generic()
      Get the generic ExecutorService. This executor service Executor.execute(Runnable) method will run the Runnable it is given in the ThreadContext of the thread that queues it.

      Warning: this ExecutorService will not throw RejectedExecutionException if you submit a task while it shutdown. It will instead silently queue it and not run it.

    • executor

      public ExecutorService executor(String name)
      Get the ExecutorService with the given name. This executor service's Executor.execute(Runnable) method will run the Runnable it is given in the ThreadContext of the thread that queues it.

      Warning: this ExecutorService might not throw RejectedExecutionException if you submit a task while it shutdown. It will instead silently queue it and not run it.

      Parameters:
      name - the name of the executor service to obtain
      Throws:
      IllegalArgumentException - if no executor service with the specified name exists
    • schedule

      public Scheduler.ScheduledCancellable schedule(Runnable command, TimeValue delay, String executor)
      Schedules a one-shot command to run after a given delay. The command is run in the context of the calling thread.
      Specified by:
      schedule in interface Scheduler
      Parameters:
      command - the command to run
      delay - delay before the task executes
      executor - the name of the thread pool on which to execute this task. SAME means "execute on the scheduler thread" which changes the meaning of the ScheduledFuture returned by this method. In that case the ScheduledFuture will complete only when the command completes.
      Returns:
      a ScheduledFuture who's get will return when the task is has been added to its target thread pool and throw an exception if the task is canceled before it was added to its target thread pool. Once the task has been added to its target thread pool the ScheduledFuture will cannot interact with it.
      Throws:
      EsRejectedExecutionException - if the task cannot be scheduled for execution
    • scheduleUnlessShuttingDown

      public void scheduleUnlessShuttingDown(TimeValue delay, String executor, Runnable command)
    • scheduleWithFixedDelay

      public Scheduler.Cancellable scheduleWithFixedDelay(Runnable command, TimeValue interval, String executor)
      Description copied from interface: Scheduler
      Schedules a periodic action that runs on scheduler thread. Do not run blocking calls on the scheduler thread. Subclasses may allow to execute on a different executor, in which case blocking calls are allowed.
      Specified by:
      scheduleWithFixedDelay in interface Scheduler
      Parameters:
      command - the action to take
      interval - the delay interval
      executor - the name of the executor that has to execute this task. Ignored in the default implementation but can be used by subclasses that support multiple executors.
      Returns:
      a Scheduler.Cancellable that can be used to cancel the subsequent runs of the command. If the command is running, it will not be interrupted.
    • stopCachedTimeThread

      protected final void stopCachedTimeThread()
    • shutdown

      public void shutdown()
    • shutdownNow

      public void shutdownNow()
    • awaitTermination

      public boolean awaitTermination(long timeout, TimeUnit unit) throws InterruptedException
      Throws:
      InterruptedException
    • scheduler

      public ScheduledExecutorService scheduler()
    • searchThreadPoolSize

      public static int searchThreadPoolSize(int allocatedProcessors)
    • terminate

      public static boolean terminate(ExecutorService service, long timeout, TimeUnit timeUnit)
      Returns true if the given service was terminated successfully. If the termination timed out, the service is null this method will return false.
    • terminate

      public static boolean terminate(ThreadPool pool, long timeout, TimeUnit timeUnit)
      Returns true if the given pool was terminated successfully. If the termination timed out, the service is null this method will return false.
    • getThreadContext

      public ThreadContext getThreadContext()
    • assertNotScheduleThread

      public static boolean assertNotScheduleThread(String reason)
    • assertCurrentMethodIsNotCalledRecursively

      public static boolean assertCurrentMethodIsNotCalledRecursively()