JBoss API: Class WorkerQueue

org.jboss.util
Class WorkerQueue

java.lang.Object
  |
  +--org.jboss.util.WorkerQueue
Direct Known Subclasses:
TimerQueue

public class WorkerQueue
extends java.lang.Object

Class that queues Executable jobs that are executed sequentially by a single thread.

Version:
$Revision: 1.5.6.1 $
Author:
Simone Bordet (simone.bordet@compaq.com)
See Also:
Executable

Inner Class Summary
protected  class WorkerQueue.QueueLoop
          Class that loops getting the next job to be executed and then executing it, in the worker thread.
 
Field Summary
protected  java.lang.Thread m_queueThread
           
 
Constructor Summary
WorkerQueue()
          Creates a new worker queue with default thread name of "Worker Thread"
WorkerQueue(java.lang.String threadName)
          Creates a new worker queue with the specified thread name
WorkerQueue(java.lang.String threadName, boolean isDaemon)
          Creates a new worker queue with the specified thread name
 
Method Summary
protected  void clear()
          Clears the running thread after the queue has been stopped.
protected  java.lang.Runnable createQueueLoop()
          Creates the loop that will get the next job and process it.
protected  Executable getJob()
          Called by this class, this method checks if the queue is empty; if it is, then waits, else returns the current job.
protected  Executable getJobImpl()
          Never call this method, only override in subclasses to perform job getting in a specific way, normally tied to the data structure holding the jobs.
protected  boolean isInterrupted()
          Returns whether the worker thread has been interrupted.
protected  void logJobException(java.lang.Exception x)
          Logs exceptions that happens during the execution of a job.
 void putJob(Executable job)
          Called by a thread that is not the WorkerQueue thread, this method queues the job and, if necessary, wakes up this worker queue that is waiting in getJob().
protected  void putJobImpl(Executable job)
          Never call this method, only override in subclasses to perform job adding in a specific way, normally tied to the data structure holding the jobs.
 void start()
          Starts the worker queue.
 void stop()
          Stops nicely the worker queue.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

m_queueThread

protected java.lang.Thread m_queueThread
Constructor Detail

WorkerQueue

public WorkerQueue()
Creates a new worker queue with default thread name of "Worker Thread"

WorkerQueue

public WorkerQueue(java.lang.String threadName)
Creates a new worker queue with the specified thread name

WorkerQueue

public WorkerQueue(java.lang.String threadName,
                   boolean isDaemon)
Creates a new worker queue with the specified thread name
Method Detail

start

public void start()
Starts the worker queue.
See Also:
stop()

stop

public void stop()
Stops nicely the worker queue.
After this call trying to put a new job will result in a InterruptedException to be thrown. The jobs queued before and not yet processed are processed until the queue is empty, then this worker queue is cleared.
See Also:
clear(), start(), isInterrupted()

putJob

public void putJob(Executable job)
Called by a thread that is not the WorkerQueue thread, this method queues the job and, if necessary, wakes up this worker queue that is waiting in getJob().

isInterrupted

protected boolean isInterrupted()
Returns whether the worker thread has been interrupted.
When this method returns true, it is not possible to put new jobs in the queue and the already present jobs are executed and removed from the queue, then the thread exits.
See Also:
stop()

getJob

protected Executable getJob()
                     throws java.lang.InterruptedException
Called by this class, this method checks if the queue is empty; if it is, then waits, else returns the current job.
See Also:
putJob(org.jboss.util.Executable)

getJobImpl

protected Executable getJobImpl()
                         throws java.lang.InterruptedException
Never call this method, only override in subclasses to perform job getting in a specific way, normally tied to the data structure holding the jobs.

putJobImpl

protected void putJobImpl(Executable job)
Never call this method, only override in subclasses to perform job adding in a specific way, normally tied to the data structure holding the jobs.

clear

protected void clear()
Clears the running thread after the queue has been stopped.
After this call, this worker queue is unusable and can be garbaged.

createQueueLoop

protected java.lang.Runnable createQueueLoop()
Creates the loop that will get the next job and process it.
Override in subclasses to create a custom loop.

logJobException

protected void logJobException(java.lang.Exception x)
Logs exceptions that happens during the execution of a job. Default implementation simply printStackTrace the exception.


Copyright 2000 The JBoss Organization. All Rights Reserved.