디자인 모드 - 단일 사례 의 수수께끼

속담 에 이 르 기 를 일률적으로 잘 배우 면 마누라 가 빠 질 수 없다 고 한다.
기왕 이렇게 된 바 에 야 우 리 는 곧 일례 학습 에 들 어 갈 것 이다.
예 를 들 어 전체적으로 말 하면 두 가지 모델 로 나 눌 수 있다. 청매 족 말 형 과 첫눈 에 반 하 는 형 이다.
청매 족 마 형:
public class Singleton{
 private static Singleton obj = new Singleton();
 
 private Singleton(){}

 public static Singleton getInstance(){
  return obj;
 }
}

위의 코드 에서 알 수 있 듯 이 기본적으로 처음부터 있 었 고 대상 이 태 어 나 자마자 있 었 다.바 꿀 것 도 없 이 구사회 의 청매 족 마 와 비슷 하지 않 습 니까? 
우 리 는 프로그램 에서 이러한 대상 을 초기 화하 여 시스템 후기 에 대상 을 만 드 는 시간 을 절약 할 수 있다.그러나 만약 이 대상 이 사용 되 지 않 는 다 면 JVM 의 old memory space 를 낭비 할 것 이다.
첫눈 에 반하 다
type1
public class Singleton{
 private static Singleton obj;
 
 private Singleton(){}

 public static synchronized Singleton getInstance(){
  if(obj == null){
   obj = new Singleton();
  }
  return obj;
 }
}
type2 
public class Singleton{
 private volatile static Singleton obj;

 private Singleton(){}

 public static Singleton getInstance(){
  if(obj == null){
   synchronized(Singleton.class){
    if(obj == null){
     obj = new Singleton();
    }
   }
  }
 }
}

type 1 과 type 2 의 차 이 는 type 1 이 전체 방법 을 잠 그 는 것 입 니 다. 소 모 된 자원 은 type 2 보다 상대 적 으로 많 습 니 다. 높 은 병행 시스템 에서 우 리 는 type 2 를 선택 합 니 다.
type 1 은 데이트 할 때 전세 내 는 것 으로 이해 할 수 있 습 니 다. type 2 는 데이트 할 때 책상 을 예약 하고 더 많은 소 모 를 하 는 것 을 알 게 될 것 입 니 다!

좋은 웹페이지 즐겨찾기