de.jsystems.tools.thread
Class ThreadObject

java.lang.Object
  extended byjava.lang.Thread
      extended byde.jsystems.tools.thread.ThreadObject
All Implemented Interfaces:
Runnable

public final class ThreadObject
extends Thread

Bei dieser Klasse handelt es sich um einen Thread. Dieser wird vom ThreadManager in einem Pool gehalten und bei bedarf gestartet. Daraufhin führt er die execute-Methode des übergebenen Execute-Objektes aus. Je nachdem, was in diesem ExecuteObject festgelegt ist, wird die Methode einmal, mehrmals oder endlos ausgeführt. Der Thread wird eigentlich nicht erst dann gestartet, wenn ein ExecuteObject übergeben wird, sondern schon vorher beim Erzeugen im Pool. Daraufhin wird er aber sofort schlafen geschickt und wacht erst dann auf, wenn ein ExecuteObject gesetzt wurde.

Version:
1.0
Author:
Jens Homm

Field Summary
static String EXCEPTION_OCCURED
          Konstante für Event, das eine exception aufgetreten ist.
static String KILLED
          Konstante für Event, das der Thread gekillt wurde.
 
Fields inherited from class java.lang.Thread
MAX_PRIORITY, MIN_PRIORITY, NORM_PRIORITY
 
Constructor Summary
ThreadObject()
          Hier wird der Thread initialisiert mit allen benötigten Starteinstellungen.
 
Method Summary
 IExecuteObject getExecuteObject()
          Gibt das ExecuteObject zurück, das von diesem Thread ausgeführt wird.
 boolean isBusy()
          Fragt den Thread, ob er gerade mit einem ExecuteObjekt beschäftigt ist.
 boolean isRunning()
          Diese Methode sollte von einem anderen Aufrufer als dem ThreadPool nie aufgerufen werden.
 void killThread()
          Beendet die Ausführung der Methode execute endgültig.
 void reRunThread()
          Läßt den Thread weiterlaufen, falls er über die Methode stopThread gestoppt wurde.
 void run()
          Diese Methode wird ausgeführt innerhalb des Thread.
 void setDeleted()
          Wird aufgerufen, wenn der Thread wirklich beendet werden soll.
 void setExecuteObject(IExecuteObject executeObject)
          Setzt das ExecuteObject, das von diesem Thread ausgeführt werden soll.
 void setMessage(ThreadMessage message)
          Setzt eine Message für den Thread.
 void stopThread()
          Stoppt die Ausführung des Threads.
 
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, toString, yield
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

KILLED

public static final String KILLED
Konstante für Event, das der Thread gekillt wurde.

See Also:
Constant Field Values

EXCEPTION_OCCURED

public static final String EXCEPTION_OCCURED
Konstante für Event, das eine exception aufgetreten ist.

See Also:
Constant Field Values
Constructor Detail

ThreadObject

public ThreadObject()
Hier wird der Thread initialisiert mit allen benötigten Starteinstellungen.

Method Detail

run

public void run()
Diese Methode wird ausgeführt innerhalb des Thread. In dieser Methode wird dann die execute-Methode des gesetzten ExecuteObject ausgeführt.


stopThread

public void stopThread()
Stoppt die Ausführung des Threads. Die Ausführung kann jederzeit wieder gestartet werden. Falls der Thread sich gerade in der execute-Methode befindet, so wird diese erst noch fertig abgearbeitet und dann der Thread gestoppt.


reRunThread

public void reRunThread()
Läßt den Thread weiterlaufen, falls er über die Methode stopThread gestoppt wurde. Wenn der Thread gar nicht gestoppt ist, passiert bei einem Aufruf nichts.


killThread

public void killThread()
Beendet die Ausführung der Methode execute endgültig. Falls der Thread gerade in der execute-Methode ist, wird diese erst noch beendet. Dann werden alle Listener benachrichtigt, das der Thread gekillt wurde. Hier wird das data-Object aus dem ExecuteObject nicht mit in das EventObject übergeben. Danach wird das ExecuteObject aus diesem Thread gelöscht und der Thread wandert wieder in den Pool.


isBusy

public boolean isBusy()
Fragt den Thread, ob er gerade mit einem ExecuteObjekt beschäftigt ist. Die Methode gibt auch dann TRUE zurück, wenn der Thread gerade gestoppt ist, da er ja wieder gestartet werden könnte. Erst, wenn der Thread gekillt wurde(oder noch nie beschäftigt war), gibt die Methode FALSE zurück. Der Thread wird hier nicht im eigentlichen Sinne gekillt, da er immer noch im Pool vorhanden ist. Er bricht lediglich die Ausführung des gesetzten ExecuteObject ab und benachrichtigt die Listener, daß die Abarbeitung des Threads abgebrochen wurde.

Returns:
TRUE, wenn gerade ein ExecuteObject ausgeführt wird, ansonsten FALSE.

setMessage

public void setMessage(ThreadMessage message)
Setzt eine Message für den Thread. Diese wird an das ausgeführte ExecuteObject übergeben. Diese Methode wird nur benutzt für messagegesteuerte Threads.

Parameters:
message - Die Message für den Thread.

setExecuteObject

public void setExecuteObject(IExecuteObject executeObject)
Setzt das ExecuteObject, das von diesem Thread ausgeführt werden soll. Wird NULL übergeben, wird eine IllegalArgumentException ausgelöst.

Parameters:
executeObject - Das auszuführende Objekt.
Throws:
IllegalArgumentException, - wenn der Parameter NULL ist.

getExecuteObject

public IExecuteObject getExecuteObject()
Gibt das ExecuteObject zurück, das von diesem Thread ausgeführt wird. Wenn aktuell kein Objekt gesetzt ist, wird NULL zurückgegeben.

Returns:
Das zur Ausführung gesetzte ExecuteObject oder NULL.

isRunning

public boolean isRunning()
Diese Methode sollte von einem anderen Aufrufer als dem ThreadPool nie aufgerufen werden. Sie dient lediglich der Feststellung, ob die run()-Methode schon erreicht wurde. Nach dem Aufruf der start-Methode an einem Thread ist nicht festgelegt, wann der Thread wirklich gestartet wird. Der ThreadPool braucht aber ThreadObjekte, die wirklich gestartet sind.

Returns:
TRUE, wenn der Thread wirklich gestartet wurde, ansonsten false.

setDeleted

public void setDeleted()
Wird aufgerufen, wenn der Thread wirklich beendet werden soll. Falls gerade ein ExecuteObject ausgeführt wird, so wird die Ausführung des ExecuteObject abgebrochen. In diesem Falle wird an die registrierten Listener ein Event geschickt, das der Thread gekillt wurde.