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
synchronizedfor aplicado a um método não estático, o bloqueio ocorre no objeto (this) a partir do qual o método é chamado. - Se
synchronizedfor 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 objetoobj.
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
}
}
}