Sobes.tech
Junior — Middle

Como funciona o mecanismo synchronized ao usá-lo com uma função estática no contexto de um monitor?

sobes.tech IA

Resposta da IA

Quando um método é declarado como synchronized static em Java, o monitor (lock) é adquirido ao nível da classe, e não ao nível da instância do objeto. Isso significa que, ao chamar tal método, o thread bloqueia o monitor da classe (objeto Class), e nenhum outro thread poderá executar simultaneamente outros métodos estáticos sincronizados dessa mesma classe.

Exemplo:

public class Example {
    public static synchronized void staticSyncMethod() {
        // bloqueia o monitor da classe Example.class
        // seção crítica
    }
}

Assim, synchronized em um método estático garante exclusão mútua ao nível de toda a classe, e não de um objeto específico. Isso é útil quando se precisa sincronizar o acesso a recursos ou variáveis estáticas da classe.