인스턴스 하나만 만들기
public class Singleton { private volatile static Singleton instance; private Singleton() { } public static Singleton getInstance() { if (instance == null) { synchronized (Singleton.class) { if (instance == null) { instance = new Singleton(); } } } return instance; } }
※ java.lang.ExceptionInInitializerError 발생 주의.
public class Singleton { private Singleton(){ } private static class SingletonHolder{ static final Singleton instance = new Singleton(); } public static Singleton getInstatnce(){ return SingletonHolder.instance; } }
Effective Java에서 소개된 방법.
public enum Singleton { INSTANCE; public static Singleton getInstance() { return INSTANCE; } }