Information Technology Reference
In-Depth Information
Methode run() erfordert, welche vom Thread runnit aufgerufen wird. Das ist der
Mechanismus, der die Agenten mit Autonomie ausstattet. Diese Hilfsklasse bietet den
Agenten zwei grundlegende Funktionen. Die erste ist das autonome Verhalten, bei dem
die Methode processTimerPop() der Agenten jede sleepTime -Millisekunden
aufgerufen wird. Die andere ist die Fähigkeit, Ereignisse asynchron zu verarbeiten, in-
dem sie sie in eine Warteschlange stellt und sie dann alle asyncTime -Millisekunden
verarbeitet. Beide Verhaltensweisen werden von einem einzigen Thread unterstützt. Der
Timer wird von den Methoden startTimer() , stopTimer() und quitTimer()
gesteuert. Die Methode startTimer() erstellt beim ersten Aufruf einen Thread und
führt ihn aus, wenn er nicht schon läuft. Die Methode stopTimer() setzt einfach den
booleschen Wert timerEnabled auf falsch. Die Methode run() wird ihn lesen und
so den Aufruf von processTimerPop() vermeiden. Die Methode quitTimer()
setzt das Flag quit auf wahr, was dazu führt, dass die Methode run() und der Prozess
runnit beendet werden. Dies impliziert, dass die Klasse Agent nur einen einzigen Le-
benszyklus besitzt. Um mit anderen Agenten und JavaBeans zu kommunizieren, wird die
Schnittstelle AgentEventListener implementiert. Diese Schnittstelle erweitert die
Java-Standardschnittstelle EventListener , die von allen Komponenten von java.
awt und JavaBeans verwendet wird. Obwohl keine der JavaBeans-Klassen erweitert
werden, ist die Klasse Agent dank der Schnittstelle EventListener und dem öffent-
lichen, argumentfreien Standardkonstruktor Agent() eine echte JavaBean. Ein Vektor
von Listenern enthält alle Java-Objekte, die die Schnittstelle AgentEventListener
implementieren und sich mit Hilfe der Methode add AgentEventListener() selbst
registriert haben. Jedes Java-Objekt kann die Ereignisquelle von AgentEvents sein und
jedes Objekt, das die Schnittstelle AgentEventListener implementiert, kann ein re-
gistrierter Listener dieser Ereignisse sein. Die Klasse Agent stellt die Methoden addA-
gentEventListener() und removeAgentEventListener() zur Verfügung,
so dass andere Listener der Multicast-Ereignisbenachrichtigungsliste hinzugefügt werden
können. Diese Methoden bieten volle Unterstützung für die Ereignis-Anwendungspro-
grammierschnittstelle der JavaBeans, so dass Agenten präsentiert werden können, indem
man eines der visuellen Werkzeuge verwendet, das JavaBeans unterstützt.
Die Methode notifyAgentEventListener() wird verwendet, um Ereignisse
an registrierte Listener zu senden. Dazu müssen die Methoden addAgentEventLis-
tener() , removeAgentEventListener() und notifyAgentEventListe-
ner() synchronisiert werden, um den Zugriff auf die Vektoren der Listener in einer Mul-
tithread-Umgebung zu regeln. Jeder Agent hat ein Stringelement oder eine Eigenschaft
zum Setzen und Erhalten seines Namens (name) durch den Customizer oder Eigen-
schafteneditor der Bean. Dabei wird die JavaBean-Klasse PropertyChangeSupport
verwendet, um name zu einer gebundenen Eigenschaft zu machen. Wenn name verändert
wird, werden andere Listener für die Veränderung von Eigenschaften informiert. Pro-
pertyChange -Ereignisse werden bei JavaBeans verwendet, um Konfigurations- oder
Zustandsänderungen zu signalisieren. Die AgentEvents werden dagegen für die Kom-
munikation von Agenten verwendet, während sie eine Anwendung verarbeiten. Die an-
Search WWH ::




Custom Search