Sync Singleton to Java 25: split 6 implementations into separate files, consolidated Main.java demo
This commit is contained in:
19
01-creational/singleton/AppConfigHolder.java
Normal file
19
01-creational/singleton/AppConfigHolder.java
Normal 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;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user