Junior — Middle
Como é que o bloqueio é efetuado ao chamar um método estático declarado com a palavra-chave synchronized?
sobes.tech IA
Resposta da IA
Se um método estático for declarado com a palavra-chave synchronized, então o bloqueio ocorre no objeto da classe (objeto Class), e não numa instância.
Isto significa que ao chamar esse método, o thread captura o monitor (lock) da classe a que o método pertence, e outros threads que tentarem chamar qualquer outro método estático sincronizado dessa mesma classe, irão esperar pela liberação do bloqueio.
Exemplo:
public class MyClass {
public static synchronized void staticSyncMethod() {
// código do método
}
}
Aqui, o monitor é o objeto MyClass.class.