de.jsystems.tools.thread
Class ExecuteObject

java.lang.Object
  extended byde.jsystems.tools.thread.ExecuteObject
All Implemented Interfaces:
IExecuteObject

public abstract class ExecuteObject
extends Object
implements IExecuteObject

Diese Klasse enthält die Methode, die innerhalb eines Threads ausgeführt werden soll. Dabei kann festgelegt werden, ob die Methode nur einmal oder innerhalb einer Schleife mehrmals oder endlos ausgeführt werden soll. Bei einer mehrfach oder Endlosausführung kann ein Zeitwert eingestellt werden, der die Intervallhäufigkeit angibt. Dabei darf ein Minimalwert von 2 ms nicht unterschritten werden. Ein kleinerer Wert wird ignoriert. Bei der Mehrfachausführung wird eine Anzahl angegeben. Die vierte Möglichkeit ist die Ausführung als Messagegesteuertes Objekt. Dabei wird der ausführende Thread immer nur dann aufgeweckt, wenn eine Nachricht für das ExecuteObject vorliegt. Sobald die Message abgearbeitet wurde, wird der Thread wieder schlafen gelegt, bis eine neue Message ankommt. Allerdings darf ein messagegesteuertes Objekt nicht mit normalen Messages versorgt werden, da es dann passieren kann, das der Thread gar nichts mehr macht. In diesem Zustand kann der Thread dann nur noch gekillt werden. Bei dieser Klasse handelt es sich um die Defaultimplementierung des Interfaces IExceuteObject.

Version:
1.0
Author:
Jens Homm

Field Summary
protected  Object data
          Daten, die dieses Objekt erzeugt.
 
Fields inherited from interface de.jsystems.tools.thread.IExecuteObject
ENDLESS, MESSAGE, MULTIPLE, SINGLE
 
Constructor Summary
ExecuteObject(String name)
          Erzeugt ein neues ExecuteObject.
 
Method Summary
 void addThreadListener(ThreadListener listener)
          Fügt einen neuen Listener der Liste hinzu.
 Object getData()
          Gibt ein Objekt mit Daten zurück, die der Thread ermittelt hat.
 int getIntervallCount()
          Legt die Anzahl Aufrufe für die Methode execute fest.
 long getIntervallTime()
          Gibt die Zeit in ms zurück, die zwischen zwei Aufrufen der Methode execute vergehen soll.
 int getIntervallType()
          Legt fest, ob die Methode execute einmal, mehrmals oder endlos aufgerufen werden soll.
 String getName()
          Gibt den Namen zurück, den der Thread erhalten soll, während er dieses Objekt ausführt.
 boolean isMessageReady()
          Gibt TRUE zurück, wenn eine neue Message geliefert werden kann.
 void messageOccured(ThreadMessage message)
          Setzt ein Message-Object für das ExecuteObjekt.
 void messageReady()
          Wird aufgerufen, sobald die letzte eingetroffene Message bearbeitet wurde.
 void messageRetrieved(ThreadMessage message)
          Wird aufgerufen, sobald eine Message für das ExecuteObject eingetroffen ist.
 void notifyListeners(ThreadEvent event)
          Benachrichtigt alle Listener, die über das Ende der Execute-Methode informiert werden wollen.
 void removeThreadListener(ThreadListener listener)
          Löscht den übergebenen Listener aus der Liste.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 
Methods inherited from interface de.jsystems.tools.thread.IExecuteObject
execute
 

Field Detail

data

protected Object data
Daten, die dieses Objekt erzeugt.

Constructor Detail

ExecuteObject

public ExecuteObject(String name)
Erzeugt ein neues ExecuteObject. Der übergebene Name ist der Name, unter dem das Objekt über den ThreadManager ansprechbar ist. Der übergebene String darf nicht leer oder NULL sein. Falls doch, so wird eine IllegalArgumentException ausgelöst.

Method Detail

getName

public final String getName()
Gibt den Namen zurück, den der Thread erhalten soll, während er dieses Objekt ausführt. Unter diesem Namen können dem Thread(genauer: Dem ExecuteObject, das gerade von einem Thread ausgeführt wird) Nachrichten geschickt werden.

Specified by:
getName in interface IExecuteObject

getData

public final Object getData()
Gibt ein Objekt mit Daten zurück, die der Thread ermittelt hat.

Specified by:
getData in interface IExecuteObject

messageOccured

public final void messageOccured(ThreadMessage message)
Setzt ein Message-Object für das ExecuteObjekt.

Specified by:
messageOccured in interface IExecuteObject

messageRetrieved

public void messageRetrieved(ThreadMessage message)
Wird aufgerufen, sobald eine Message für das ExecuteObject eingetroffen ist. Sobald die Message abgearbeitet wurde, muß die Methode messageReady aufgerufen werden, damit ggf. die nächste anstehende Message geliefert werden kann.

Specified by:
messageRetrieved in interface IExecuteObject

messageReady

public void messageReady()
Wird aufgerufen, sobald die letzte eingetroffene Message bearbeitet wurde. Erst dann kann eine neue Message geliefert werden.

Specified by:
messageReady in interface IExecuteObject

isMessageReady

public boolean isMessageReady()
Gibt TRUE zurück, wenn eine neue Message geliefert werden kann.

Specified by:
isMessageReady in interface IExecuteObject

getIntervallTime

public long getIntervallTime()
Gibt die Zeit in ms zurück, die zwischen zwei Aufrufen der Methode execute vergehen soll. Werte kleiner als 2 ms werden als 2 ms interpretiert. Defaultmäßig gibt die Methode einen Wert von 100 zurück. Wenn ein anderes Verhalten erwünscht ist, muß die Methode überschrieben werden. Der Rückgabewert der Methode wird nur bei den Intervalltypen MULTIPLE und ENDLESS berücksichtigt.

Specified by:
getIntervallTime in interface IExecuteObject

getIntervallType

public int getIntervallType()
Legt fest, ob die Methode execute einmal, mehrmals oder endlos aufgerufen werden soll. Defaultmäßig wird hier ENDLESS zurückgegeben. Wenn ein anderes Verhalten erwünscht ist, muß die Methode überschrieben werden.

Specified by:
getIntervallType in interface IExecuteObject

getIntervallCount

public int getIntervallCount()
Legt die Anzahl Aufrufe für die Methode execute fest. Dieser Wert wird nur berücksichtigt, wenn der IntervallType auf MULTIPLE steht. Defaultmäßig wird hier '0' zurückgegeben. Wenn ein anderes Verhalten erwünscht ist, muß die Methode überschrieben werden.

Specified by:
getIntervallCount in interface IExecuteObject

notifyListeners

public void notifyListeners(ThreadEvent event)
Benachrichtigt alle Listener, die über das Ende der Execute-Methode informiert werden wollen.

Specified by:
notifyListeners in interface IExecuteObject

addThreadListener

public void addThreadListener(ThreadListener listener)
Fügt einen neuen Listener der Liste hinzu.

Specified by:
addThreadListener in interface IExecuteObject

removeThreadListener

public void removeThreadListener(ThreadListener listener)
Löscht den übergebenen Listener aus der Liste. Falls der Listener mehrmals registriert wurde, so werden alle Registrierungen gelöscht.

Specified by:
removeThreadListener in interface IExecuteObject