package singleton; public class AppConfigHolder { private AppConfigHolder() { /* load config */ } // The JVM loads Holder only when getInstance() is first called. // Class loading is inherently thread-safe — the JVM ensures it happens once. // No synchronized, no volatile, no locks — just the JVM class loading guarantee. private static class Holder { static final AppConfigHolder INSTANCE = new AppConfigHolder(); } public static AppConfigHolder getInstance() { // This reference triggers Holder to load (if it hasn't already). // After first call, Holder is already loaded and this is just a field read. return Holder.INSTANCE; } }