Class ThreadPoolProviderImpl

java.lang.Object
org.hibernate.search.engine.environment.thread.impl.ThreadPoolProviderImpl
All Implemented Interfaces:
ThreadPoolProvider

public class ThreadPoolProviderImpl extends Object implements ThreadPoolProvider
Helper to create threads and executors.
Author:
Sanne Grinovero
  • Constructor Details

  • Method Details

    • close

      public void close()
    • threadProvider

      public ThreadProvider threadProvider()
      Specified by:
      threadProvider in interface ThreadPoolProvider
      Returns:
      The underlying thread provider.
    • newFixedThreadPool

      public ThreadPoolExecutor newFixedThreadPool(int threads, String threadNamePrefix)
      Description copied from interface: ThreadPoolProvider
      Creates a new fixed size ThreadPoolExecutor.

      It's using a blocking queue of maximum 1000 elements and the rejection policy is set to block until the queue can accept the task. These settings are required to cap the queue, to make sure the timeouts are reasonable for most jobs.

      Specified by:
      newFixedThreadPool in interface ThreadPoolProvider
      Parameters:
      threads - the number of threads
      threadNamePrefix - a label to identify the threads; useful for profiling.
      Returns:
      the new ExecutorService
    • newFixedThreadPool

      public ThreadPoolExecutor newFixedThreadPool(int threads, String threadNamePrefix, int queueSize)
      Description copied from interface: ThreadPoolProvider
      Creates a new fixed size ThreadPoolExecutor.

      It's using a blocking queue of maximum queueSize elements and the rejection policy is set to block until the queue can accept the task. These settings are required to cap the queue, to make sure the timeouts are reasonable for most jobs.

      Specified by:
      newFixedThreadPool in interface ThreadPoolProvider
      Parameters:
      threads - the number of threads
      threadNamePrefix - a label to identify the threads; useful for profiling.
      queueSize - the size of the queue to store Runnables when all threads are busy
      Returns:
      the new ExecutorService
    • newScheduledExecutor

      public ScheduledExecutorService newScheduledExecutor(int threads, String threadNamePrefix)
      Description copied from interface: ThreadPoolProvider
      Creates a new fixed size ScheduledExecutorService.

      The queue size is not capped, so users should take care of checking they submit a reasonable amount of tasks.

      Specified by:
      newScheduledExecutor in interface ThreadPoolProvider
      Parameters:
      threads - the number of threads
      threadNamePrefix - a label to identify the threads; useful for profiling.
      Returns:
      the new ExecutorService
    • isScheduledExecutorBlocking

      public boolean isScheduledExecutorBlocking()
      Specified by:
      isScheduledExecutorBlocking in interface ThreadPoolProvider
      Returns:
      true if the executors returned by ThreadPoolProvider.newScheduledExecutor(int, java.lang.String) may block when submitting a task; false if they never block (e.g. they throw an RejectedExecutionException).