Pouvez-vous expliquer le concept de moniteur en Java et son rôle dans la synchronisation des threads?
sobes.tech IA
Réponse de l'IA
En Java, un moniteur est un mécanisme de synchronisation qui assure l'exclusion mutuelle (mutex) lors de l'accès à des ressources partagées entre threads. Chaque objet en Java possède un moniteur associé.
Lorsqu'un thread entre dans un bloc ou une méthode synchronisée (par exemple, en utilisant le mot-clé synchronized), il acquiert le moniteur de l'objet. Tant que le moniteur est occupé, d'autres threads tentant d'entrer dans le même bloc ou méthode synchronisée de ce même objet seront bloqués et attendront que le moniteur soit libéré.
Cela garantit qu'un seul thread exécute la section critique du code à la fois, évitant les conditions de course et assurant la cohérence des données.
Exemple:
public class Counter {
private int count = 0;
public synchronized void increment() {
count++;
}
public synchronized int getCount() {
return count;
}
}
Ici, les méthodes increment et getCount sont synchronisées, c'est-à-dire qu'elles utilisent le moniteur de l'objet Counter pour protéger l'accès à la variable count.