Sobes.tech
Junior — Middle

¿Cómo funciona el mecanismo synchronized cuando se usa con una función estática en el contexto de un monitor?

sobes.tech AI

Respuesta de la IA

Cuando un método se declara como synchronized static en Java, el monitor (lock) se adquiere a nivel de clase, no a nivel de instancia del objeto. Esto significa que, al llamar a dicho método, el hilo bloquea el monitor de la clase (objeto Class), y ningún otro hilo podrá ejecutar simultáneamente otros métodos estáticos sincronizados de esa misma clase.

Ejemplo:

public class Example {
    public static synchronized void staticSyncMethod() {
        // se bloquea el monitor de la clase Example.class
        // sección crítica
    }
}

Por lo tanto, synchronized en un método estático garantiza la exclusión mutua a nivel de toda la clase, no de un objeto en particular. Esto es útil cuando se necesita sincronizar el acceso a recursos o variables estáticas de la clase.