Sobes.tech
Middle

O que é o padrão de projeto Singleton com verificação dupla de bloqueio?

sobes.tech IA

Resposta da IA

O padrão Singleton garante a criação de apenas uma instância da classe e fornece um ponto de acesso global a ela. A verificação dupla de bloqueio (Double-Checked Locking) é uma otimização para a inicialização preguiçosa do Singleton em um ambiente multithread.

public class Singleton {

    private static volatile Singleton instance; // 'volatile' garante a visibilidade das mudanças em todas as threads

    private Singleton() {
        // Construtor privado para evitar a criação direta de instâncias
    }

    public static Singleton getInstance() {
        if (instance == null) { // Primeira verificação: não é necessário sincronizar se o objeto já foi criado
            synchronized (Singleton.class) { // Bloqueio no objeto da classe
                if (instance == null) { // Segunda verificação: impede a criação de múltiplas instâncias se várias threads passarem pela primeira verificação
                    instance = new Singleton(); // Inicialização da instância
                }
            }
        }
        return instance;
    }
}