자바 단일 모드 최적화 쓰기
2368 단어 디자인 모드
public class SingletonClass {
private static class SingletonClassInstance {
private static final SingletonClass instance = new SingletonClass();
}
public static SingletonClass getInstance() {
return SingletonClassInstance.instance;
}
private SingletonClass() {
}
}
이런 방식 에서 단일 모드 는 내부 클래스 를 사용 하여 단일 사례 의 실현 을 유지 하고 JVM 내부 의 체 제 는 하나의 클래스 가 불 러 올 때 이런 로드 과정 은 스 레 드 가 서로 배척 하 는 것 을 보장 할 수 있다.이렇게 하면 getInstance 를 처음 호출 할 때 JVM 은 인 스 턴 스 가 한 번 만 생 성 되 는 것 을 보증 할 수 있 고 인 스 턴 스 에 할당 한 메모리 초기 화 를 보장 할 수 있 습 니 다.이 방법 은 첫 번 째 호출 때 만 상호 배척 체 제 를 사용 해 저 성능 문 제 를 해결 했다.
이 버 전의 단일 모드 구현 코드 에서 우 리 는 자바 의 정적 내부 클래스 를 사용 했다.이 기술 은 JVM 에 의 해 명 확 히 설 명 된 것 이기 때문에 어떠한 이의 성도 존재 하지 않 는 다.이 코드 에 서 는 SingletonClass 에 static 속성 이 없 기 때문에 초기 화 되 지 않 습 니 다.getInstance () 를 호출 할 때 까지 SingletonClassInstance 클래스 를 먼저 불 러 옵 니 다. 이 클래스 는 static 의 SingletonClass 인 스 턴 스 가 있 기 때문에 SingletonClass 의 구조 방법 을 호출 한 다음 getInstance () 는 이 내부 클래스 의 인 스 턴 스 를 사용자 에 게 되 돌려 줍 니 다.이 인 스 턴 스 는 static 이기 때문에 여러 번 구성 되 지 않 습 니 다.
Singleton ClassInstance 는 개인 정적 내부 클래스 이기 때문에 다른 클래스 에 알려 지지 않 습 니 다. 마찬가지 로 static 의미 도 여러 개의 인 스 턴 스 가 존재 하지 않도록 요구 합 니 다.또한 JSL 규범 에 따 르 면 유형의 구 조 는 반드시 원자 적 이 고 동시 다발 적 이지 않 아야 하기 때문에 동기 화 블록 을 추가 할 필요 가 없다.마찬가지 로 이 구 조 는 동시 다발 적 이기 때문에 getInstance () 도 동기 화 할 필요 가 없다.
방법 2:
public class SingletonTest {
private static SingletonTest instance = null;
private SingletonTest() {
}
private static synchronized void syncInit() {
if (instance == null) {
instance = new SingletonTest();
}
}
public static SingletonTest getInstance() {
if (instance == null) {
syncInit();
}
return instance;
}
}
방법 3:
public class SingletonClass {
private static SingletonClass instance = null;
public static SingletonClass getInstance() {
if (instance == null) {
synchronized (SingletonClass.class) {
if (instance == null) {
instance = new SingletonClass();
}
}
}
return instance;
}
private SingletonClass() {
}
}
참고:http://devbean.blog.51cto.com/448512/203501/
http://blog.csdn.net/longyulu/article/details/9159589
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
디자인 모델 의 공장 모델, 단일 모델자바 는 23 가지 디자인 모델 (프로 그래 밍 사상/프로 그래 밍 방식) 이 있 습 니 다. 공장 모드 하나의 공장 류 를 만들어 같은 인 터 페 이 스 를 실현 한 일부 종 류 를 인 스 턴 스 로 만 드 는 것...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.