AMETAS.util
Class Monitor

java.lang.Object
  extended byAMETAS.util.Monitor
All Implemented Interfaces:
java.io.Serializable

public class Monitor
extends java.lang.Object
implements java.io.Serializable

Ein Objekt dieser Klasse kann als Java-Monitor verwendet werden. Oft reicht es nicht aus, this als Monitor in einem synchronized(...)-Statement zu verwenden, weil man mehrere Monitore innerhalb einer Klasse benötigt oder den Monitor vor abgeleiteten Klassen verbergen will. In diesem Fall muß man auf einer eigens hierfür angelegten Instanzvariable synchronisieren. Hierfür bietet sich grundsätzlich java.lang.Object an. Man legt also eine Variable an:

        private Object m_objSync = new Object();
        

um darauf im fraglichen Codeteil zu synchronisieren:

        ...
        synchronized( m_objSync ) {
            ...
                m_objSync.wait();
                ...
        }
        ...
        

Wenn jedoch ein Objekt der umgebenden Klasse, z.B. ein Agent, serialisiert werden soll, bereitet die Verwendung der Klasse java.lang.Object unerwartete Probleme: Sie ist nicht serialisierbar. Um diesem Problem zu entgehen muß man eine andere Klasse zur Erzeugung des Monitors verwenden, z.B. Integer, da diese serialisierbar ist. Codeästheten stehen jedoch auf dem Standpunkt, daß ein Integer nur verwendet werden sollte, wo ein Integer auch benötigt wird. Die Verwendung einer abgeleiteten Klasse allein in ihrer Eigenschaft als Object ist von Standpunkt der Verständlichkeit und Übersichtlichkeit daher fraglich. Dehalb gibt es diese Klasse. Sie macht nichts weiter, als das Interface java.io.Serializable zu implementieren, und als Monitor zu dienen. Dies ist übrigens die kleinste Klasse von AMETAS ;-). Obiges Codefragment sollte also wie folgt aussehen:

        private Monitor m_monSync = new Monitor();

        ...

        synchronized( m_monSync ) {
            ...
                m_monSync.wait();
                ...
        }

        ...

        

Since:
2.1.1
See Also:
Serialized Form

Constructor Summary
Monitor()
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

Monitor

public Monitor()