Class PriorityThreadPoolExecutor

All Implemented Interfaces:
Executor, ExecutorService

public class PriorityThreadPoolExecutor extends ThreadPoolExecutor
A ThreadPoolExecutor that maintains the order of IoEvents within a session (similar to OrderedThreadPoolExecutor) and allows some sessions to be prioritized over other sessions.

If you don't need to maintain the order of events per session, please use UnorderedThreadPoolExecutor.

If you don't need to prioritize sessions, please use OrderedThreadPoolExecutor.

  • Field Details

    • LOGGER

      private static final org.slf4j.Logger LOGGER
      A logger for this class (commented as it breaks MDCFlter tests)
    • seq

      private static final AtomicLong seq
      Generates sequential identifiers that ensure FIFO behavior.
    • DEFAULT_INITIAL_THREAD_POOL_SIZE

      private static final int DEFAULT_INITIAL_THREAD_POOL_SIZE
      A default value for the initial pool size
      See Also:
    • DEFAULT_MAX_THREAD_POOL

      private static final int DEFAULT_MAX_THREAD_POOL
      A default value for the maximum pool size
      See Also:
    • DEFAULT_KEEP_ALIVE

      private static final int DEFAULT_KEEP_ALIVE
      A default value for the KeepAlive delay
      See Also:
    • EXIT_SIGNAL

      private static final PriorityThreadPoolExecutor.SessionEntry EXIT_SIGNAL
    • TASKS_QUEUE

      private static final AttributeKey TASKS_QUEUE
      A key stored into the session's attribute for the event tasks being queued
    • waitingSessions

      A queue used to store the available sessions
    • workers

      private final Set<PriorityThreadPoolExecutor.Worker> workers
    • largestPoolSize

      private volatile int largestPoolSize
    • idleWorkers

      private final AtomicInteger idleWorkers
    • completedTaskCount

      private long completedTaskCount
    • shutdown

      private volatile boolean shutdown
    • eventQueueHandler

      private final IoEventQueueHandler eventQueueHandler
    • comparator

      private final Comparator<IoSession> comparator
      The session comparator
  • Constructor Details

    • PriorityThreadPoolExecutor

      public PriorityThreadPoolExecutor()
      Creates a default ThreadPool, with default values :
      • minimum pool size is 0
      • maximum pool size is 16
      • keepAlive set to 30 seconds
      • A default ThreadFactory
      • All events are accepted
    • PriorityThreadPoolExecutor

      public PriorityThreadPoolExecutor(Comparator<IoSession> comparator)
      Creates a default ThreadPool, with default values :
      • minimum pool size is 0
      • maximum pool size is 16
      • keepAlive set to 30 seconds
      • A default ThreadFactory
      • All events are accepted
      Parameters:
      comparator - A session comparator
    • PriorityThreadPoolExecutor

      public PriorityThreadPoolExecutor(int maximumPoolSize)
      Creates a default ThreadPool, with default values :
      • minimum pool size is 0
      • keepAlive set to 30 seconds
      • A default ThreadFactory
      • All events are accepted
      Parameters:
      maximumPoolSize - The maximum pool size
    • PriorityThreadPoolExecutor

      public PriorityThreadPoolExecutor(int maximumPoolSize, Comparator<IoSession> comparator)
      Creates a default ThreadPool, with default values :
      • maximum pool size is 16
      • keepAlive set to 30 seconds
      • A default ThreadFactory
      • All events are accepted
      Parameters:
      maximumPoolSize - The maximum pool size
      comparator - A session comparator
    • PriorityThreadPoolExecutor

      public PriorityThreadPoolExecutor(int minimumPoolSize, int maximumPoolSize)
      Creates a default ThreadPool, with default values :
      • keepAlive set to 30 seconds
      • A default ThreadFactory
      • All events are accepted
      Parameters:
      minimumPoolSize - The initial pool size
      maximumPoolSize - The maximum pool size
    • PriorityThreadPoolExecutor

      public PriorityThreadPoolExecutor(int minimumPoolSize, int maximumPoolSize, long keepAliveTime, TimeUnit unit)
      Creates a default ThreadPool, with default values :
      • minimum pool size is 0
      • A default ThreadFactory
      Parameters:
      minimumPoolSize - The initial pool size
      maximumPoolSize - The maximum pool size
      keepAliveTime - Default duration for a thread
      unit - Time unit used for the keepAlive value
    • PriorityThreadPoolExecutor

      public PriorityThreadPoolExecutor(int minimumPoolSize, int maximumPoolSize, long keepAliveTime, TimeUnit unit, IoEventQueueHandler eventQueueHandler)
      Creates a default ThreadPool, with default values :
      • A default ThreadFactory
      Parameters:
      minimumPoolSize - The initial pool size
      maximumPoolSize - The maximum pool size
      keepAliveTime - Default duration for a thread
      unit - Time unit used for the keepAlive value
      eventQueueHandler - The queue used to store events
    • PriorityThreadPoolExecutor

      public PriorityThreadPoolExecutor(int minimumPoolSize, int maximumPoolSize, long keepAliveTime, TimeUnit unit, ThreadFactory threadFactory)
      Creates a default ThreadPool
      Parameters:
      minimumPoolSize - The initial pool size
      maximumPoolSize - The maximum pool size
      keepAliveTime - Default duration for a thread
      unit - Time unit used for the keepAlive value
      threadFactory - The factory used to create threads
    • PriorityThreadPoolExecutor

      public PriorityThreadPoolExecutor(int minimumPoolSize, int maximumPoolSize, long keepAliveTime, TimeUnit unit, ThreadFactory threadFactory, IoEventQueueHandler eventQueueHandler, Comparator<IoSession> comparator)
      Creates a new instance of a PrioritisedOrderedThreadPoolExecutor.
      Parameters:
      minimumPoolSize - The initial pool sizePoolSize
      maximumPoolSize - The maximum pool size
      keepAliveTime - Default duration for a thread
      unit - Time unit used for the keepAlive value
      threadFactory - The factory used to create threads
      eventQueueHandler - The queue used to store events
      comparator - A session comparator
  • Method Details