Obwohl Monitore in Java Sprachprimitive sind, mit deren Hilfe nebenläufige Berechnungen auf gemeinsamen Daten koordiniert werden, zeigt sich, daß sie selbst komplexe Datenstrukturen darstellen. Ein Monitor nach Java-Semantik enthält eine rekursive Sperrre und eine Ereignisvariable und muß demnach mindestens folgende Informationen vereinigen:
monitor: owner ; Besitzer der Sperre (aktiv) depth ; Erwerbungstiefe entering ; Menge der erwerbenden Threads (suspendiert) waiting ; Menge der wartenden Threads (suspendiert)
Weiterhin müssen -- abhängig von der Thread-Implementierung -- Mechanismen zum Suspendieren und Reaktivieren von Threads existieren.
Damit lässt sich eine abstrakte Implementierung für Monitore konstruieren: die Monitoroperationen monitorenter und monitorexit können dann wie in Abbildung 5.4 implementiert werden. Sie garantieren gegenseitigen Ausschluß im Zugriff auf ihr Java-Objekt.
Die gewählte Monitorimplementierung hängt von der gewünschten Monitorsemantik ab -- z.B. ob und wie die Erwerbungsreihenfolge von der Ankunftsreihenfolge der Threads abhängen soll. Die Java-Spezifikation gibt hier keine besondere Semantik vor.
Unabhängig davon ist der hier dargestellte Algorithmus in einem zentralen Punkt unvollständig: die Monitorstruktur selbst ist nicht vor nebenläufigem Zugriff geschützt. Um einen atomaren Übergang des Monitorzustands zu garantieren, muß sie wiederum durch eine Sperre abgesichtert werden. [Agesen et al., 1999] sprechen von einer Metasperre (meta-lock).