Sobes.tech
Junior — Middle

¿En qué objeto se realiza el mecanismo de bloqueo al usar la palabra clave synchronized?

sobes.tech AI

Respuesta de la IA

En Java, al usar la palabra clave synchronized, el mecanismo de bloqueo depende del contexto:

  • Si synchronized se aplica a un método no estático, el bloqueo ocurre en el objeto (this) desde el cual se llama al método.
  • Si synchronized se aplica a un método estático, el bloqueo ocurre en el objeto de la clase (Class), es decir, en la propia clase.
  • Si se usa un bloque synchronized(obj), el bloqueo ocurre en el objeto obj.

Ejemplo:

public class Example {
    public synchronized void instanceMethod() {
        // bloqueo en this
    }

    public static synchronized void staticMethod() {
        // bloqueo en Example.class
    }

    public void blockMethod() {
        Object lock = new Object();
        synchronized(lock) {
            // bloqueo en lock
        }
    }
}