Package org.opencms.scheduler
Class CmsSchedulerThreadPool
- java.lang.Object
-
- org.opencms.scheduler.CmsSchedulerThreadPool
-
- All Implemented Interfaces:
org.quartz.spi.ThreadPool
public class CmsSchedulerThreadPool extends java.lang.Object implements org.quartz.spi.ThreadPool
Simple thread pool used for the Quartz scheduler in OpenCms.- Since:
- 6.0.0
-
-
Constructor Summary
Constructors Constructor Description CmsSchedulerThreadPool()Create a newCmsSchedulerThreadPoolwith default values.CmsSchedulerThreadPool(int initialThreadCount, int maxThreadCount, int threadPriority)Create a newCmsSchedulerThreadPoolwith the specified number of threads that have the given priority.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description intblockForAvailableThreads()protected java.lang.RunnablegetNextRunnable()Dequeue the next pendingRunnable.intgetPoolSize()intgetThreadPriority()Returns the thread priority of the threads in the scheduler pool.voidinitialize()booleanrunInThread(java.lang.Runnable runnable)Run the givenRunnableobject in the next availableThread.voidsetInstanceId(java.lang.String schedInstId)voidsetInstanceName(java.lang.String schedName)voidshutdown()Terminate any worker threads in this thread group.voidshutdown(boolean waitForJobsToComplete)Terminate all threads in this thread group.
-
-
-
Constructor Detail
-
CmsSchedulerThreadPool
public CmsSchedulerThreadPool()
Create a newCmsSchedulerThreadPoolwith default values. This will create a pool with 0 initial and 10 maximum threads running in normal priority.- See Also:
CmsSchedulerThreadPool(int, int, int)
-
CmsSchedulerThreadPool
public CmsSchedulerThreadPool(int initialThreadCount, int maxThreadCount, int threadPriority)
Create a newCmsSchedulerThreadPoolwith the specified number of threads that have the given priority. The OpenCms scheduler thread pool will initially start with provided number of active scheduler threads. When a thread is requested by the scheduler, and no "free" threads are available, a new thread will be added to the pool and used for execution. The pool will be allowed to grow until it has reached the configured number of maximum threads.- Parameters:
initialThreadCount- the initial number of threads for the poolmaxThreadCount- maximum number of threads the pool is allowed to growthreadPriority- the thread priority for the scheduler threads- See Also:
Thread
-
-
Method Detail
-
blockForAvailableThreads
public int blockForAvailableThreads()
- Specified by:
blockForAvailableThreadsin interfaceorg.quartz.spi.ThreadPool- Returns:
- if the pool should be blocked for available threads
- See Also:
ThreadPool
-
getPoolSize
public int getPoolSize()
- Specified by:
getPoolSizein interfaceorg.quartz.spi.ThreadPool- See Also:
ThreadPool.getPoolSize()
-
getThreadPriority
public int getThreadPriority()
Returns the thread priority of the threads in the scheduler pool.- Returns:
- the thread priority of the threads in the scheduler pool
-
initialize
public void initialize() throws org.quartz.SchedulerConfigException
- Specified by:
initializein interfaceorg.quartz.spi.ThreadPool- Throws:
org.quartz.SchedulerConfigException- See Also:
ThreadPool.initialize()
-
runInThread
public boolean runInThread(java.lang.Runnable runnable)
Run the givenRunnableobject in the next availableThread.If while waiting the thread pool is asked to shut down, the Runnable is executed immediately within a new additional thread.
- Specified by:
runInThreadin interfaceorg.quartz.spi.ThreadPool- Parameters:
runnable- theRunnableto run- Returns:
- true if the
Runnablewas run
-
shutdown
public void shutdown()
Terminate any worker threads in this thread group.Jobs currently in progress will be allowed to complete.
-
shutdown
public void shutdown(boolean waitForJobsToComplete)
Terminate all threads in this thread group.- Specified by:
shutdownin interfaceorg.quartz.spi.ThreadPool- Parameters:
waitForJobsToComplete- if true,, all current jobs will be allowed to complete
-
getNextRunnable
protected java.lang.Runnable getNextRunnable() throws java.lang.InterruptedException
Dequeue the next pendingRunnable.- Returns:
- the next pending
Runnable - Throws:
java.lang.InterruptedException- if something goes wrong
-
setInstanceId
public void setInstanceId(java.lang.String schedInstId)
- Specified by:
setInstanceIdin interfaceorg.quartz.spi.ThreadPool
-
setInstanceName
public void setInstanceName(java.lang.String schedName)
- Specified by:
setInstanceNamein interfaceorg.quartz.spi.ThreadPool
-
-