Monitor Lock (Bloqueo de Monitor) es un mecanismo de sincronización y control de exclusión mutua en Java, también conocido como bloqueo interno o monitor. Cada objeto tiene un bloqueo de monitor correspondiente en Java.
Cuando encuentra synchronized
un bloque de código o método, adquiere el bloqueo del monitor del objeto sincronizado. Solo un subproceso puede mantener un bloqueo de monitor en un objeto a la vez. Otros subprocesos que intenten adquirir el mismo bloqueo se bloquearán hasta que se libere el bloqueo.
synchronized
Un bloqueo de monitor garantiza que solo un subproceso pueda ejecutar el bloque de código o el método asociado con el bloqueo . Proporciona exclusión mutua, lo que evita que varios subprocesos accedan a recursos compartidos al mismo tiempo, lo que puede provocar daños o incoherencias en los datos.
El siguiente es un ejemplo para ilustrar el uso de bloqueos de monitor:
public class MyClass {
private int count = 0;
public synchronized void increment() {
// 同步方法
// 同一时间只有一个线程可以执行这个方法
count++;
}
}
En el código anterior, los métodos synchronized
están decorados con palabras clave increment
. El bloqueo del monitor asociado con este método es para garantizar que solo un subproceso pueda manipular variables this
al ejecutar el método y mantener la coherencia de los recursos compartidos.increment
count
Cabe señalar que el bloqueo del monitor es reentrante, es decir, el mismo subproceso puede adquirir el mismo bloqueo varias veces sin punto muerto. Un bloqueo reentrante permite que un subproceso ingrese un método o bloque de código sincronizado tantas veces como ya tiene el bloqueo.
En resumen, el bloqueo del monitor es el concepto básico de la sincronización de subprocesos en Java, que proporciona sincronización y control de exclusión mutua. Garantiza que solo un subproceso pueda ejecutar el código de sincronización asociado con un objeto de bloqueo en particular, lo que evita el acceso simultáneo a los recursos compartidos y garantiza operaciones seguras para subprocesos.