디자인 모델 - 단일 모델 (게으름뱅이, 굶 주 린 사람, 쌍 검 자물쇠, 정적 내부 류)

3143 단어
단일 모드 라 니 요?
  • 특정한 프로그램의 특정한 예 가 있 고 예시 만 있 음 을 보증 합 니 다
  • 단일 모드 의 응용 장면
  • 필요 한 장면 의 대상 은 하나만 존재 하면 충분 하 다. 예 를 들 어 연결 탱크 설정 초기 화
  •     /**
         * @  : Redis JedisPool       
         */
        public static JedisPool getPool() {
            if (pool == null) {
                JedisPoolConfig config = new JedisPoolConfig();
                config.setMaxTotal(500);
                config.setMaxIdle(5);
                config.setMaxWaitMillis(1000 * 100);
                config.setTestOnBorrow(true);
                pool = new JedisPool(config,REDIS_IP,PORT,10000,AUTH_PASS);
            }
            return pool;
        }
    

    단일 모드. - 굶 주 린 모드.
  • 클래스 를 불 러 올 때 대상 을 불 러 옵 니 다
  • 굶 주 린 남자 모델 은 스 레 드 안전
  • 에 속한다.
    /**
     * 1.       private,         
     * 2.                        private,     
     *          static,           ,     static
     * 3.                       
     *      static,                    
     **/
    public class singleton(){
         pravite static singleton  instance = new singleton();
    
         public static singleton getInstance(){
             return instance;
         }
    
    }
    

    단일 모드 - 게으름뱅이 모드
  • 실례 화 되 어 첫 번 째 호출 되 어야 초기 화
  • 게으름뱅이 모델 의 비 스 레 드 안전 은 스 레 드 안전성 에서 볼 때 동기 화 자 물 쇠 를 넣 지 않 은 게으름뱅이 식 은 스 레 드 가 안전 하지 않다.스 레 드 0 이 들 어 오기 시작 하면 인 스 턴 스 가 비어 있다 고 판단 합 니 다. 인 스 턴 스 를 만 들 때 cpu 가 전환 되 고 스 레 드 1 이 다시 들 어 왔 습 니 다. 같은 인 스 턴 스 가 비어 서 인 스 턴 스 를 만 들 었 습 니 다. 이것 은 cpu 가 0 스 레 드 로 전환 되 어 인 스 턴 스 를 계속 만 들 면 두 개의 인 스 턴 스 가 나타 납 니 다.따라서 굶 주 린 사람 모드 를 안전하게 사용 하기 위해 클래스 로 딩 할 때 인 스 턴 스 를 만 들 거나 동기 화 잠 금
  • 을 사용 합 니 다.
    /**
     * 1、    :                new   ,              
     *   a.        ;
     *   b.        ,     ;
     *   c.    static                    。
     * 2、    :       ,        ,      。
     *                   。  :    ,    。
     **/
    public Singleton2{
       //1.       
       private Singleton2(){
       }
       //2.       ,       ,        
       private static Singleton2 instance;
    
       //3.   (  )     
       public static Singleton2 getInstance(){
          //4.          
          if(instance==null){
            instance = new Singleton2();
          }
          return instance;
       }
    }
    
  • 게으름뱅이 모드 이중 검사 자물쇠
  • /**
     *      -      
     */
    
    public class Singleton {  
        private volatile static Singleton singleton;  
        private Singleton (){}  
        public static Singleton getSingleton() {  
        if (singleton == null) {  
            synchronized (Singleton.class) {  
                if (singleton == null) {  
                    singleton = new Singleton();  
                } 
            }  
        }  
        return singleton; 
        }  
    } 
    
  • 게으름뱅이 모드 - 정적 내부 클래스
  • /**
     *      -      
     */ 
    public class Singleton {  
        //        
        private Singleton (){}  
        //       classloder         INSTANCE       
        //Singleton     ,instance       
        //  SingletonHolder        ,        getInstance   ,
        //       SingletonHolder ,     instance。
        private static class SingletonHolder {  
         private static final Singleton INSTANCE = new Singleton();  
        }  
      
        public static final Singleton getInstance() {  
            return SingletonHolder.INSTANCE;  
        }  
    }  
    

    좋은 웹페이지 즐겨찾기