Avatar ·

Implementação eficiente do padrão Singleton em Java

Olá a todos! Sou um desenvolvedor Java iniciante e estou estudando padrões de projeto. Cheguei no Singleton, mas me confundi na implementação. Problema: preciso criar uma classe que garanta ter apenas uma instância em toda a aplicação. Escrevi uma versão simples com lazy initialization, mas ela não funciona corretamente em ambiente multithread. Aqui está meu código: ```java public class ConfigManager { private static ConfigManager instance; private ConfigManager() {} public static ConfigManager getInstance() { if (instance == null) { instance = new ConfigManager(); } return instance; } } ``` Quando executo um teste com várias threads, às vezes várias instâncias são criadas. Li sobre synchronized, mas tenho medo de que isso afete muito a performance. Também vi versões com enum e bloco estático, mas não entendo qual delas é considerada "correta" e eficiente em aplicações modernas. Diga-me como fazer corretamente.