Class PriorityExecutor
- java.lang.Object
-
- org.apache.synapse.commons.executors.PriorityExecutor
-
public class PriorityExecutor extends Object
This is the class used for executing the tasks with a given priority. It is backed by a BlockingQueue and a ThreadPoolExecutor. The BlockingQueue is a custom implementation which has multiple internal queues for handling separate priorities.
-
-
Constructor Summary
Constructors Constructor Description PriorityExecutor()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description voiddestroy()Destroy the executor.voidexecute(Runnable task, int priority)Execute a given task with the priority specified.BeforeExecuteHandlergetBeforeExecuteHandler()Get the handler that is executed before the worker is put in to the queueintgetCore()Get the core number of threadsStringgetFileName()Get the file used to store this executor configintgetKeepAlive()Get the keep alive time for threadsintgetMax()Get the max threadsStringgetName()Get the name of the executorMultiPriorityBlockingQueue<Runnable>getQueue()Get the queue.voidinit()Initialize the executor by using the properties.voidsetBeforeExecuteHandler(BeforeExecuteHandler beforeExecuteHandler)Set a handler for execute before putting a worker in to the queues.voidsetCore(int core)Set the core number of threadsvoidsetFileName(String fileName)Set the file used to store the configvoidsetKeepAlive(int keepAlive)Set the keep alive time for threadsvoidsetMax(int max)Set the max number of threadsvoidsetName(String name)Set the name of the executorvoidsetQueue(MultiPriorityBlockingQueue<Runnable> queue)Set the queue.
-
-
-
Method Detail
-
execute
public void execute(Runnable task, int priority)
Execute a given task with the priority specified. If the task throws an exception, it will be captured and logged to prevent the threads from dying.- Parameters:
task- task to be executedpriority- priority of the task
-
init
public void init()
Initialize the executor by using the properties. Create the queues and ThreadPool executor.
-
destroy
public void destroy()
Destroy the executor. Stop all the threads running.
-
setName
public void setName(String name)
Set the name of the executor- Parameters:
name- of the executor
-
getName
public String getName()
Get the name of the executor- Returns:
- name of the executor
-
setBeforeExecuteHandler
public void setBeforeExecuteHandler(BeforeExecuteHandler beforeExecuteHandler)
Set a handler for execute before putting a worker in to the queues. User can set some properties to the worker at this point. This allows users to get more control over the queue selection algorithm. This is an optional configuration.- Parameters:
beforeExecuteHandler- an object implementing the BeforeExecuteHandler
-
getBeforeExecuteHandler
public BeforeExecuteHandler getBeforeExecuteHandler()
Get the handler that is executed before the worker is put in to the queue- Returns:
- an object of BeforeExecuteHandler
-
setQueue
public void setQueue(MultiPriorityBlockingQueue<Runnable> queue)
Set the queue.- Parameters:
queue- queue used for handling the priorities
-
getQueue
public MultiPriorityBlockingQueue<Runnable> getQueue()
Get the queue.- Returns:
- queue used for handling multiple priorities
-
getCore
public int getCore()
Get the core number of threads- Returns:
- core number of threads
-
getMax
public int getMax()
Get the max threads- Returns:
- max thread
-
getKeepAlive
public int getKeepAlive()
Get the keep alive time for threads- Returns:
- keep alive time for threads
-
setCore
public void setCore(int core)
Set the core number of threads- Parameters:
core- core number of threads
-
setMax
public void setMax(int max)
Set the max number of threads- Parameters:
max- max threads
-
setKeepAlive
public void setKeepAlive(int keepAlive)
Set the keep alive time for threads- Parameters:
keepAlive- keep alive threads
-
getFileName
public String getFileName()
Get the file used to store this executor config- Returns:
- file used for storing the config
-
setFileName
public void setFileName(String fileName)
Set the file used to store the config- Parameters:
fileName- file name
-
-