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.