Class ThreadPoolConfig

java.lang.Object
org.glassfish.jersey.jdk.connector.internal.ThreadPoolConfig

public final class ThreadPoolConfig extends Object
Client thread pool configuration, which might be used to customize client thread pool.

One can get a default ThreadPoolConfig using defaultConfig() and customize it according to the application specific requirements.

A ThreadPoolConfig object might be customized in a "Builder"-like fashion:

      ThreadPoolConfig.defaultConfig()
               .setPoolName("App1Pool")
               .setCorePoolSize(5)
               .setMaxPoolSize(10);
 
Author:
Oleksiy Stashok, gustav trede
  • Method Details

    • defaultConfig

      public static ThreadPoolConfig defaultConfig()
      Create new client thread pool configuration instance. The returned ThreadPoolConfig instance will be pre-configured with a default values.
      Returns:
      client thread pool configuration instance.
    • copy

      public ThreadPoolConfig copy()
      Return a copy of this thread pool config.
      Returns:
      a copy of this thread pool config.
    • getQueue

      public Queue<Runnable> getQueue()
      Return a queue that will be used to temporarily store tasks when all threads in the thread pool are busy.
      Returns:
      queue that will be used to temporarily store tasks when all threads in the thread pool are busy.
    • setQueue

      public ThreadPoolConfig setQueue(Queue<Runnable> queue)
      Set a queue implementation that will be used to temporarily store tasks when all threads in the thread pool are busy.
      Parameters:
      queue - queue implementation that will be used to temporarily store tasks when all threads in the thread pool are busy.
      Returns:
      the ThreadPoolConfig with the new Queue implementation.
    • getThreadFactory

      public ThreadFactory getThreadFactory()
      Return ThreadFactory that will be used to create thread pool threads.

      If ThreadFactory is set, then priority, isDaemon, poolName settings will not be considered when creating new threads.

      Returns:
      ThreadFactory that will be used to create thread pool threads.
    • setThreadFactory

      public ThreadPoolConfig setThreadFactory(ThreadFactory threadFactory)
      Set ThreadFactory that will be used to create thread pool threads.
      Parameters:
      threadFactory - custom ThreadFactory If ThreadFactory is set, then priority, isDaemon, poolName settings will not be considered when creating new threads.
      Returns:
      the ThreadPoolConfig with the new ThreadFactory
    • getPoolName

      public String getPoolName()
      Return thread pool name. The default is "Tyrus-client".
      Returns:
      the thread pool name.
    • setPoolName

      public ThreadPoolConfig setPoolName(String poolName)
      Set thread pool name. The default is "Tyrus-client".
      Parameters:
      poolName - the thread pool name.
      Returns:
      the ThreadPoolConfig with the new thread pool name.
    • getPriority

      public int getPriority()
      Get priority of the threads in thread pool. The default is Thread.NORM_PRIORITY.
      Returns:
      priority of the threads in thread pool.
    • setPriority

      public ThreadPoolConfig setPriority(int priority)
      Set priority of the threads in thread pool. The default is Thread.NORM_PRIORITY.
      Parameters:
      priority - of the threads in thread pool.
      Returns:
      the ThreadPoolConfig with the new thread priority.
    • isDaemon

      public boolean isDaemon()
      Return true if thread pool threads are daemons. The default is true.
      Returns:
      true if thread pool threads are daemons.
    • setDaemon

      public ThreadPoolConfig setDaemon(boolean isDaemon)
      Set true if thread pool threads are daemons. The default is true.
      Parameters:
      isDaemon - true if thread pool threads are daemons.
      Returns:
      the ThreadPoolConfig with the daemon property set.
    • getMaxPoolSize

      public int getMaxPoolSize()
      Get max thread pool size. The default is Math.max(Runtime.getRuntime().availableProcessors(), 20)
      Returns:
      max thread pool size.
    • setMaxPoolSize

      public ThreadPoolConfig setMaxPoolSize(int maxPoolSize)
      Set max thread pool size. The default is The default is Math.max(Runtime.getRuntime().availableProcessors(), 20).

      Cannot be smaller than 3.

      Parameters:
      maxPoolSize - the max thread pool size.
      Returns:
      the ThreadPoolConfig with the new max pool size set.
    • getCorePoolSize

      public int getCorePoolSize()
      Get the core thread pool size - the size of the thread pool will never bee smaller than this.

      The default is 1.

      Returns:
      the core thread pool size - the size of the thread pool will never bee smaller than this.
    • setCorePoolSize

      public ThreadPoolConfig setCorePoolSize(int corePoolSize)
      Set the core thread pool size - the size of the thread pool will never bee smaller than this.

      The default is 1.

      Parameters:
      corePoolSize - the core thread pool size - the size of the thread pool will never bee smaller than this.
      Returns:
      the ThreadPoolConfig with the new core pool size set.
    • getQueueLimit

      public int getQueueLimit()
      Get the limit of the queue, where tasks are temporarily stored when all threads are busy.

      Value less than 0 means unlimited queue. The default is -1.

      Returns:
      the thread-pool queue limit. The queue limit
    • setQueueLimit

      public ThreadPoolConfig setQueueLimit(int queueLimit)
      Set the limit of the queue, where tasks are temporarily stored when all threads are busy.

      Value less than 0 means unlimited queue. The default is -1.

      Parameters:
      queueLimit - the thread pool queue limit. The queueLimit value less than 0 means unlimited queue.
      Returns:
      the ThreadPoolConfig with the new queue limit.
    • setKeepAliveTime

      public ThreadPoolConfig setKeepAliveTime(long time, TimeUnit unit)
      The max period of time a thread will wait for a new task to process.

      If the timeout expires and the thread is not a core one (see setCorePoolSize(int), setMaxPoolSize(int)) - then the thread will be terminated and removed from the thread pool.

      The default is 10s.

      Parameters:
      time - max keep alive timeout. The value less than 0 means no timeout.
      unit - time unit.
      Returns:
      the ThreadPoolConfig with the new keep alive time.
    • getKeepAliveTime

      public long getKeepAliveTime(TimeUnit timeUnit)
      Get the max period of time a thread will wait for a new task to process.

      If the timeout expires and the thread is not a core one (see setCorePoolSize(int), setMaxPoolSize(int)) - then the thread will be terminated and removed from the thread pool.

      The default is 10s.

      Returns:
      the keep-alive timeout, the value less than 0 means no timeout.
    • getInitialClassLoader

      public ClassLoader getInitialClassLoader()
      Get the class loader (if any) to be initially exposed by threads from this pool.

      If not specified, the class loader of the parent thread that initialized the pool will be used.

      Returns:
      the class loader (if any) to be initially exposed by threads from this pool.
    • setInitialClassLoader

      public ThreadPoolConfig setInitialClassLoader(ClassLoader initialClassLoader)
      Specifies the context class loader that will be used by threads in this pool.

      If not specified, the class loader of the parent thread that initialized the pool will be used.

      Parameters:
      initialClassLoader - the class loader to be exposed by threads of this pool.
      Returns:
      the ThreadPoolConfig with the class loader set.
      See Also:
    • toString

      public String toString()
      Overrides:
      toString in class Object
    • equals

      public boolean equals(Object o)
      Overrides:
      equals in class Object
    • hashCode

      public int hashCode()
      Overrides:
      hashCode in class Object