## 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.