Android 디자인 모드 의 단일 예 모드
(1) 프로그램 이 실행 되 는 과정 에서 이 종 류 는 하나의 예시 만 존재 한다 (2) new 성능 에 대한 소모 가 비교적 큰 종 류 는 한 번 만 실례 화하 면 성능 을 향상 시 킬 수 있다
2. 단일 모드 의 인 스 턴 스
1. 굶 주 린 사람
1 public class Singleton {
2 private static Singleton instance = new Singleton();
3 private Singleton (){}
4 public static Singleton getInstance() {
5 return instance;
6 }
7 }
2. 게으름뱅이, 라인 이 안전 하지 않 음
1 public class Singleton {
2 private static Singleton instance;
3 private Singleton (){}
4 public static Singleton getInstance() {
5 if (instance == null) {
6 instance = new Singleton();
7 }
8 return instance;
9 }
10 }
3. 가장 좋 은 쓰기 (이중 검사 자물쇠)
public class Singleton {
private static volatile Singleton instance = null;
// private constructor suppresses
private Singleton(){
}
public static Singleton getInstance() {
// if already inited, no need to get lock everytime
if (instance == null) {
synchronized (Singleton.class) {
if (instance == null) {
instance = new Singleton();
}
}
}
return instance;
}
}
그 중에서 주의해 야 할 점 은 주로 세 가지 (1) 사유 화 구조 함수 (2) 가 정적 인 Singleton instance 대상 과 getInstance () 방법 (3) getInstance () 방법 에서 동기 화 잠 금 synchronized (Singleton. class) 를 사용 하여 다 중 스 레 드 가 동시에 들 어 오 는 것 을 방지 하여 intance 가 여러 번 예화 되 는 것 을 방지 해 야 합 니 다.
위 에 synchronized (Singleton. class) 외 에 if 를 추가 한 것 을 볼 수 있 습 니 다. 인 스 턴 스 가 정례 화 된 후에 다음 에 들 어 갈 때 synchronized (Singleton. class) 를 실행 하지 않 아 도 대상 자 물 쇠 를 가 져 와 성능 을 향상 시 키 기 위해 서 입 니 다.
P: private static Object obj = new Object () 를 사용 하 는 경우 도 있 습 니 다.synchronized (obj) 를 더 하면 대상 을 하나 더 만 들 필요 가 없습니다.synchronized(X.class) is used to make sure that there is exactly one Thread in the block.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
디자인 모델 의 공장 모델, 단일 모델자바 는 23 가지 디자인 모델 (프로 그래 밍 사상/프로 그래 밍 방식) 이 있 습 니 다. 공장 모드 하나의 공장 류 를 만들어 같은 인 터 페 이 스 를 실현 한 일부 종 류 를 인 스 턴 스 로 만 드 는 것...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.