Monitor Lock (Monitor Lock) est un mécanisme de synchronisation et de contrôle d'exclusion mutuelle en Java, également appelé verrouillage interne ou moniteur. Chaque objet a un verrou de moniteur correspondant en Java.
Lorsqu'il rencontre synchronized
un bloc de code ou une méthode, il acquiert le verrou de moniteur de l'objet synchronisé. Un seul thread peut détenir un verrou de moniteur sur un objet à la fois. Les autres threads essayant d'acquérir le même verrou seront bloqués jusqu'à ce que le verrou soit libéré.
synchronized
Un verrou de moniteur garantit qu'un seul thread peut exécuter le bloc de code ou la méthode associée au verrou . Il fournit une exclusion mutuelle, qui empêche plusieurs threads d'accéder aux ressources partagées en même temps, ce qui peut entraîner une corruption ou une incohérence des données.
Voici un exemple pour illustrer l'utilisation des verrous de moniteur :
public class MyClass {
private int count = 0;
public synchronized void increment() {
// 同步方法
// 同一时间只有一个线程可以执行这个方法
count++;
}
}
Dans le code ci-dessus, les méthodes synchronized
sont décorées avec des mots-clés increment
. Le verrou de moniteur associé à cette méthode consiste à garantir qu'un seul thread peut manipuler des variables this
lors de l'exécution de la méthode et à maintenir la cohérence des ressources partagées.increment
count
Il convient de noter que le verrou du moniteur est réentrant, c'est-à-dire que le même thread peut acquérir le même verrou plusieurs fois sans blocage. Un verrou réentrant permet à un thread d'entrer dans un bloc de code ou une méthode synchronisée autant de fois qu'il détient déjà le verrou.
En bref, le verrouillage du moniteur est le concept de base de la synchronisation des threads en Java, qui fournit un contrôle de la synchronisation et de l'exclusion mutuelle. Il garantit qu'un seul thread peut exécuter le code de synchronisation associé à un objet de verrouillage particulier, empêchant l'accès simultané aux ressources partagées et garantissant des opérations thread-safe.