Sobes.tech
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.