단일 모델 의 네 가지 실현 과 그 장단 점
3331 단어 디자인 모드
/ / 1. 비 스 레 드 보안
public class Test {
public static Test obj;
private Test(){};
public static Test getInstance() {
obj = new Test();
return obj;
}
}
/ / 2. 비 스 레 드 보안, 이 대상 이 영원히 필요 하지만, 클래스 를 불 러 올 때 이 대상 을 초기 화하 고 메모 리 를 사용 합 니 다.
class Test2{
public static Test2 obj=new Test2();
private Test2(){};
public static Test2 getInstance(){
return obj;
}
}
/ / 3. 스 레 드 안전, 느 림
class Test3{
public static Test3 obj;
private Test3(){};
// “ ” , ,
public static synchronized Test3 getInstance(){
if(obj==null){
obj=new Test3();
return obj;
}
return obj;
}
}
/ 4. 스 레 드 안전, 빠 름
class Test4{
public static volatile Test4 obj; // obj
private Test4(){};
public static Test4 getInstance(){//
if(obj==null){ // ,
synchronized (Test4.class){
if(obj==null){
obj=new Test4();
return obj;
}
}
}
return obj;
}
}
주: 두 번 째 는 '굶 주 린 사람 식' 실현 방법 입 니 다. 즉, 이 대상 을 사용 하지 않 고 클래스 로 딩 할 때 만 듭 니 다.
1. 장점, 장면 을 자주 사용 할 때 이런 방식 을 사용한다.2. 사용 여 부 를 확인 하지 않 으 면 굶 주 린 사람 이 메모 리 를 차지 합 니 다.배 고 프 든 안 고 프 든 간 에 사람 을 아귀 로 삼 아 만 두 를 한 솥 만 들 었 다 고 생각 하 세 요. 남 들 이 많이 먹 지 않 으 면 낭비 하 겠 어 요! ~