AMETAS.util.threadpool
Class DynamicThreadPool

java.lang.Object
  extended byAMETAS.util.threadpool.ThreadPool
      extended byAMETAS.util.threadpool.DynamicThreadPool

public class DynamicThreadPool
extends ThreadPool

Diese Klasse Implementiert einen Thread-Pool dynamischer Größe. Hiermit ist es z.B. einfach möglich, Dienste zu schreiben, die Klientenanfragen mit Hilfe einer dynamischen aber begrenzten Anzahl von Threads bearbeiten, um die Bearbeitung zu parallelisieren. Dadurch wird die Bearbeitung wesentlich beschleunigt und die Wartezeit verkürzt sich für die Klienten.

Dem Pool können Worker-Objekte übergeben werden, die in einem gerade freien WorkerThread ausgeführt werden. Dem dynamischen Pool kann eine minimale und eine maximale Zahl als Begrenzung der Anzahl von WorkerThreads übergeben werden. Dabei legt die minimale Zahl sozusagen die Grundausstattung des Pools fest. Diese Zahl von Threads wird während der Erzeugung des Pools gestartet. Während der gesamten Lebenszeit des Pools stehen diese Threads für Worker zur Verfügung und werden nicht beendet. Die maximale Obergrenze für die Thread-Anzahl gibt an, wieviele Threads zusätzlich dynamisch Erzeugt und wieder Beendet werden können, um sich dem aktuellen Aufkommen an Aufträgen (Workern) anzupassen. Die Zeitspanne, nach der sich ein untätiger, dynamisch erzeugter Thread wieder beendet, kann ebenfalls im Konstruktor angegeben werden. Ist die maximale Anzahl von Threads mit der Ausführung von Workern beschäftigt, so werden weitere Aufträge verzögert, bis ein Thread frei wird.

Since:
Version 2.2.0

Field Summary
static int DEFAULT_TIMEOUT
          Voreinstellung für den Thread-Timeout, der festlegt, wie lange ein dynamischer Thread auf neue Worker warten soll.
 
Fields inherited from class AMETAS.util.threadpool.ThreadPool
m_athrWorkers, m_nMaxThreads, m_sem
 
Constructor Summary
DynamicThreadPool(int nMaxThreads)
          Konstruktor, der einen DynamicThreadPool erzeugt, welcher zwischen 0 und nMaxThreads Threads hält.
DynamicThreadPool(int nMinThreads, int nMaxThreads, int nTimeout)
          Konstruktor, der als Argumente die minimale und die maximale Anzahl der zu haltenden WorkerThreads als Argument entgegennimmt.
 
Method Summary
 void startNewWorker(Worker wrk)
          Allokiert für den übergebenen Worker einen DynamicWorkerThread oder erzeugt einen neuen, wenn die Obergrenze für die Gesamtzahl der Threads noch nicht erreicht ist.
 java.lang.String toString()
          Liefert eine String-Repräsentation des ThreadPools.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

DEFAULT_TIMEOUT

public static final int DEFAULT_TIMEOUT
Voreinstellung für den Thread-Timeout, der festlegt, wie lange ein dynamischer Thread auf neue Worker warten soll.

See Also:
Constant Field Values
Constructor Detail

DynamicThreadPool

public DynamicThreadPool(int nMinThreads,
                         int nMaxThreads,
                         int nTimeout)
Konstruktor, der als Argumente die minimale und die maximale Anzahl der zu haltenden WorkerThreads als Argument entgegennimmt. Dieser Pool wird immer mindestens nMinThreads betreiben, welche sofort einem Worker zugeteilt werden können. Diese Zahl wird bei einem höheren Aufkommen an gleichzeitig aktiven Workern bis auf nMaxThreads gesteigert.

Parameters:
nMinThreads - minimale Anzahl der zu haltenden WorkerThreads
nMaxThreads - maximale Anzahl der zu haltenden WorkerThreads
nTimeout - Anzahl von Millisekunden, für die die dynamisch erzeugten Threads nach Bearbeitung eines Workers in Untätigkeit verharren, bevor sie sich selbständig beenden.

DynamicThreadPool

public DynamicThreadPool(int nMaxThreads)
Konstruktor, der einen DynamicThreadPool erzeugt, welcher zwischen 0 und nMaxThreads Threads hält. Der Timeout der Threads wird auf DEFAULT_TIMEOUT eingestellt.

Parameters:
nMaxThreads - maximale Anzahl der zu haltenden WorkerThreads
Method Detail

startNewWorker

public void startNewWorker(Worker wrk)
Allokiert für den übergebenen Worker einen DynamicWorkerThread oder erzeugt einen neuen, wenn die Obergrenze für die Gesamtzahl der Threads noch nicht erreicht ist. Ansonsten wird der Aufrufer solange blockiert, bis ein Thread frei wird.

Overrides:
startNewWorker in class ThreadPool
Parameters:
wrk - Ein Worker, der von einem Aufrufer erzeugt wurde und dessen Ausführung hier in Auftrag gegeben wird.

toString

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

Overrides:
toString in class ThreadPool