C'est un objet dont les attributs sont non accessibles, et toutes ses méthodes publiques sont synchronisées.
public class Compte { private int contenu = 0; public Compte(int init) { contenu = init; } public synchronized String toString() { return " valeur compte: " + contenu; } public synchronized int getCompte() { return contenu; } public synchronized boolean modifCompte(int modif) { if (contenu+modif >0) { contenu += modif; return true; } else return false; } }
Dans un moniteur, deux méthodes synchronisées ne peuvent s'exécuter simultanément. Ainsi toute instance de la classe Compte
contient une variable entière manipulable uniquement en exclusion mutuelle.