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.