Everyone knows what is singleton pattern, but how to implement a singleton class in multithreaded environment? Next, I’m going to present best approaches for this use case.
Bill Pugh Singleton Implementation
public class Singleton { private Singleton() { } private static class SingletonHolder { private static final Singleton INSTANCE = new Singleton(); } public static Singleton getInstance() { return SingletonHolder.INSTANCE; } }
Thread Safe Double Checked Singleton Implementation
public class Singleton { private static Singleton instance; private Singleton() { } public static Singleton getInstance() { if(instance == null) { synchronize (Singleton.class) { if(instance == null) { instance = new Singleton(); } } } return instance; } }