20 lines
707 B
Java
20 lines
707 B
Java
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;
|
|
}
|
|
}
|