Implémentation efficace du pattern Singleton en Java
Bonjour à tous ! Je suis un développeur Java débutant et j'étudie actuellement les patterns de conception. Je suis arrivé au Singleton, mais je me suis perdu dans l'implémentation.
Problème : j'ai besoin de créer une classe qui garantit une seule instance dans toute l'application. J'ai écrit une version simple avec initialisation paresseuse, mais elle ne fonctionne pas correctement en environnement multithread. Voici mon code :
```java
public class ConfigManager {
private static ConfigManager instance;
private ConfigManager() {}
public static ConfigManager getInstance() {
if (instance == null) {
instance = new ConfigManager();
}
return instance;
}
}
```
Quand je lance un test avec plusieurs threads, parfois plusieurs instances sont créées. J'ai lu à propos de synchronized, mais j'ai peur que cela impacte fortement les performances. J'ai aussi vu des versions avec enum et bloc statique, mais je ne comprends pas laquelle est considérée comme "correcte" et efficace dans les applications modernes.
Dites-moi, comment faire correctement