Sync Singleton to Java 25: split 6 implementations into separate files, consolidated Main.java demo

This commit is contained in:
2026-06-23 11:11:02 +05:30
parent 2fbf89875b
commit 4b6a02f396
9 changed files with 176 additions and 23 deletions

View File

@@ -0,0 +1,19 @@
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;
}
}