- Early instantiation using implementation with static field
- Lazy instantiation using double chekced locking mechanism.
//Early instantiation using implementation with static field. class Singleton { private static final Singleton instance = new Singleton(); private Singleton(){} public static synchronized Singleton getInstance(){ return instance; } }
//Lazy instantiation using double chekced locking mechanism. class Singleton { private static volatile Singleton instance; //자바 1.4이하의 메모리 관리 기술도 이해해야함 private Singleton(){ } public static Singleton getInstance(){ if (instance == null) { synchronized(Singleton.class) { if (instance == null) { instance = new Singleton(); } } } return instance; } }