AMETAS.util.threadpool
Class ThreadPool

java.lang.Object
  extended byAMETAS.util.threadpool.ThreadPool
Direct Known Subclasses:
DynamicThreadPool

public class ThreadPool
extends java.lang.Object

Diese Klasse Implementiert einen Thread-Pool fester Größe. Hiermit ist es z.B. einfach möglich, Dienste zu schreiben, die Klientenanfragen mit Hilfe einer festen 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. Der Pool Erzeugt zu Beginn die festgelegte Anzahl von WorkerThreads und kümmert sich um die Allokation freier Threads wenn er einen Auftrag in Form eines Worker-Objektes erhält. Er blockiert den Aufrufer falls gerade alle Threads beschäftigt sind und verwendet de ersten der frei wird.

Since:
Version 2.1.0

Field Summary
protected  WorkerThread[] m_athrWorkers
          Das Array, in dem alle Arbeiter-Threads dieses Pools gehalten werden.
protected  int m_nMaxThreads
          Die Obergrenze für die Anzahl der Arbeiter-Threads.
protected  Semaphore m_sem
          Diese Semaphore dient zur Synchronisation der Zugriffe auf die WorkerThreads.
 
Constructor Summary
protected ThreadPool()
          DIeser Konstruktor wird von Subklassen benötigt.
  ThreadPool(int nMaxThreads)
          Konstruktor, der die Anzahl der zu haltenden WorkerThreads als Argument entgegennimmt.
 
Method Summary
 void startNewWorker(Worker wrk)
          Allokiert für den übergebenen Worker einen WorkerThread, sobald einer frei 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

m_athrWorkers

protected WorkerThread[] m_athrWorkers
Das Array, in dem alle Arbeiter-Threads dieses Pools gehalten werden.


m_nMaxThreads

protected int m_nMaxThreads
Die Obergrenze für die Anzahl der Arbeiter-Threads.


m_sem

protected Semaphore m_sem
Diese Semaphore dient zur Synchronisation der Zugriffe auf die WorkerThreads.

Constructor Detail

ThreadPool

public ThreadPool(int nMaxThreads)
Konstruktor, der die Anzahl der zu haltenden WorkerThreads als Argument entgegennimmt.

Parameters:
nMaxThreads - Anzahl der zu haltenden WorkerThreads

ThreadPool

protected ThreadPool()
DIeser Konstruktor wird von Subklassen benötigt.

Method Detail

startNewWorker

public void startNewWorker(Worker wrk)
Allokiert für den übergebenen Worker einen WorkerThread, sobald einer frei ist.

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.