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;
}
}