Initialization on demand holder vs double-checked

게으름뱅이 모드 초기 화
public class Singleton {
    /**
     *       ,            ,              
     *       ,            ,         
     */
    private static class SingletonHolder{
        /**
         *       , JVM       
         */
        private static Singleton instance = new Singleton();
    }
    /**
     *        
     */
    private Singleton(){
    }
    public static  Singleton getInstance(){
        return SingletonHolder.instance;
    }
}

캐 시 검사 상용 방식
public class LazySingleton {  
    private static volatile LazySingleton instance;  
      
    public static LazySingleton getInstantce() {  
        if (instance == null) {  
            synchronized (LazySingleton.class) {  
                if (instance == null) {  
                    instance = new LazySingleton();  
                }  
            }  
        }  
        return instance;  
    }

좋은 웹페이지 즐겨찾기