Sobes.tech
Junior — Middle

Em qual objeto o mecanismo de bloqueio é realizado ao usar a palavra-chave synchronized?

sobes.tech IA

Resposta da IA

Em Java, ao usar a palavra-chave synchronized, o mecanismo de bloqueio depende do contexto:

  • Se synchronized for aplicado a um método não estático, o bloqueio ocorre no objeto (this) a partir do qual o método é chamado.
  • Se synchronized for aplicado a um método estático, o bloqueio ocorre no objeto da classe (Class), ou seja, na própria classe.
  • Se for usado um bloco synchronized(obj), o bloqueio ocorre no objeto obj.

Exemplo:

public class Example {
    public synchronized void instanceMethod() {
        // bloqueio em this
    }

    public static synchronized void staticMethod() {
        // bloqueio em Example.class
    }

    public void blockMethod() {
        Object lock = new Object();
        synchronized(lock) {
            // bloqueio em lock
        }
    }
}