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 Details

    • PriorityExecutor

      public PriorityExecutor()
  • Method Details

    • 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 executed
      priority - 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

      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