AMETAS.util.threadpool
Class DynamicWorkerThread

java.lang.Object
  extended byjava.lang.Thread
      extended byAMETAS.util.threadpool.WorkerThread
          extended byAMETAS.util.threadpool.DynamicWorkerThread
All Implemented Interfaces:
java.lang.Runnable

public class DynamicWorkerThread
extends WorkerThread

Objekte dieser Klasse werden in einem ThreadPool gehalten, um die Wroker eines Klienten (Aufrufers) in einem eigenen Thread auszuführen. Jeder WorkerThread wartet solange, bis ihm ein Worker zugewiesen wird. Diesen Worker führt der WorkerThread aus, indem er dessen work()-Methode aufruft. Nach Beendigung dieser Methode kehrt der Thread wieder in den Wartezustand zurück, bis ihm vom ThreadPool ein neuer Worker übergeben wird. Man könnte sagen, WorkerThreads sind beliebig oft wiederverwendbare Threads.

Since:
Version 2.2.0

Field Summary
 
Fields inherited from class AMETAS.util.threadpool.WorkerThread
m_bActive, m_bBusy, m_monSync, m_nNumericID, m_sem, m_wrkWorker
 
Fields inherited from class java.lang.Thread
MAX_PRIORITY, MIN_PRIORITY, NORM_PRIORITY
 
Constructor Summary
DynamicWorkerThread(Semaphore sem, boolean bKeepAlive, Worker wrk, int nTimeout, int nNumericID)
          Konstruktor
 
Method Summary
 void deactivate()
          Weist diesen WorkerThread an, sich selbst sanft zu beenden.
 boolean isActive()
          Gibt an, ob dieser Thread aktiv ist, d.h. noch nicht beendet wurde.
 boolean isBusy()
          Gibt an, ob dieser WorkerThread gerade arbeitet (true) oder frei ist (false).
 boolean isUpAndRunning()
          Gibt an, ob dieser Thread initialisiert ist und bereit ist, Anfragen entgegenzunehmen.
 boolean keepAlive()
          Gibt an, ob dieser Thread unabhängig von der Auslastung des Pools am Leben bleiben soll.
 void run()
          Implementierung der Methode java.lang.Thread.run().
 void startWorker(Worker wrk)
          Setzt einen neuen Worker in diesen Thread ein und startet ihn.
 java.lang.String toString()
          Liefert eine String-Repräsentation des WorkerThreads.
 
Methods inherited from class java.lang.Thread
activeCount, checkAccess, countStackFrames, currentThread, destroy, dumpStack, enumerate, getContextClassLoader, getName, getPriority, getThreadGroup, holdsLock, interrupt, interrupted, isAlive, isDaemon, isInterrupted, join, join, join, resume, setContextClassLoader, setDaemon, setName, setPriority, sleep, sleep, start, stop, stop, suspend, yield
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Constructor Detail

DynamicWorkerThread

public DynamicWorkerThread(Semaphore sem,
                           boolean bKeepAlive,
                           Worker wrk,
                           int nTimeout,
                           int nNumericID)
Konstruktor

Parameters:
sem - Die Semaphore, die der ThreadPool verwendet, um die Zahl der betriebenen WorkerThreads zu kontrollieren.
bKeepAlive - gibt an, ob dieser Thread zur Grundausstattung des Pools gehört und nicht durch ein Timeout beendet wird.
wrk - ein Worker, der durch den neu erzeugten Thread sofort ausgeführt werden soll. Nach Beendigung dieses Workers wartet der Thread auf neue Anfragen.
nTimeout - Anzahl von Millisekunden, die dieser Thread nach seinem Start oder der Bearbeitung eines Workers auf einen neuen Auftrag warten soll. Wird diese Zeit überschritten, beendet sich dieser Thread selbständig.
Method Detail

keepAlive

public boolean keepAlive()
Gibt an, ob dieser Thread unabhängig von der Auslastung des Pools am Leben bleiben soll.


isUpAndRunning

public boolean isUpAndRunning()
Gibt an, ob dieser Thread initialisiert ist und bereit ist, Anfragen entgegenzunehmen.


isActive

public boolean isActive()
Gibt an, ob dieser Thread aktiv ist, d.h. noch nicht beendet wurde.


startWorker

public void startWorker(Worker wrk)
Setzt einen neuen Worker in diesen Thread ein und startet ihn.

Overrides:
startWorker in class WorkerThread
Parameters:
wrk - Ein neuer Worker, der von diesem WorkerThread abgearbeitet werden soll.

isBusy

public boolean isBusy()
Gibt an, ob dieser WorkerThread gerade arbeitet (true) oder frei ist (false).

Overrides:
isBusy in class WorkerThread
Returns:
true falls diese WorkerThread gerade mit der Ausführung eines Workers beschäftigt ist, false sonst.

deactivate

public void deactivate()
Weist diesen WorkerThread an, sich selbst sanft zu beenden. Falls gerade ein Worker in Bearbeitung ist, erfolgt die Beendigung erst nach dieser Bearbeitung.

Overrides:
deactivate in class WorkerThread

run

public void run()
Implementierung der Methode java.lang.Thread.run().

Specified by:
run in interface java.lang.Runnable
Overrides:
run in class WorkerThread

toString

public java.lang.String toString()
Liefert eine String-Repräsentation des WorkerThreads.

Overrides:
toString in class WorkerThread