자바 면접 흔 한 패턴 문제
단일 모드 로 스토리 보드 장면:
Spring IOC
용기 에 있 는 Bean 은 기본적으로 하나의 예 이다. @Autowire
의존 주석 대상 은 기본적으로 단일 예 입 니 다.단일 모델―게으름뱅이 식 은 다음 과 같은 것 이 있다.
/**
* @Auther: csp1999
* @Date: 2020/11/06/20:36
* @Description: -
*/
public class SingletonLazy {
//
private static SingletonLazy instance;
/**
*
* new SingletonLazy()
*
*
* SingletonLazy.getInstance()
*/
private SingletonLazy() {
}
/**
*
*/
public void process() {
System.out.println(" !");
}
/**
* :
* <p>
*
* <p>
* : ,
*
* @return
*/
public static SingletonLazy getInstance() {
if (instance == null) {// null
/**
* :
* , instance == null
* if
* SingletonLazy
*/
instance = new SingletonLazy();//
}
return instance;
}
/**
* :
* synchronized
*
* synchronized
* getInstance2() ,
* , , ,
*
* @return
*/
public static synchronized SingletonLazy getInstance2() {
if (instance == null) {// null
// synchronized
instance = new SingletonLazy();//
}
return instance;
}
/**
* :
* getInstance3() , ,
*
* :
* @return
*/
public static SingletonLazy getInstance3() {
if (instance == null) {// null
// ,
// : A B
synchronized (SingletonLazy.class){
// A B A new SingletonLazy();
// A ,B ,
instance = new SingletonLazy();//
}
}
return instance;
}
}
단일 모드:게으름뱅이 실현+이중 검사 잠 금+메모리 모델상기 방식 에 존재 하 는 세 가지 결함 에 대해 우 리 는 이중 으로 잠 금 을 검사 하 는 방식 으로 이 를 개선 할 수 있다.
/**
* :
* getInstance3() , ,
*
* DCL (Double-Checked-Locking)
*
* ? instance = new SingletonLazy();
* jvm instance :
* 1.
* 2.
* 3. instance
*
* :
* :1 -> 3 -> 2,
* , instance ,
* ( )
*
* @return
*/
public static SingletonLazy getInstance3plus() {
if (instance == null) {// null
// ,
// A B
synchronized (SingletonLazy.class){//
// A B A new SingletonLazy();
// A ,B , instance == null
// ,B SingletonLazy
if (instance == null){//
instance = new SingletonLazy();//
}
}
}
return instance;
}
메모리 모델 의 명령 정렬 문 제 를 해결 하기 위해 다시 업그레이드 하 는 방법 3.
// volatile , ,
private static volatile SingletonLazy instance;
/**
* :
* getInstance3() , ,
*
* DCL (Double-Checked-Locking)
*
* ――
* @return
*/
public static SingletonLazy getInstance3plusplus() {
if (instance == null) {// null
// ,
// A B
synchronized (SingletonLazy.class){//
// A B A new SingletonLazy();
// A ,B , instance == null
// ,B SingletonLazy
if (instance == null){//
instance = new SingletonLazy();//
}
}
}
return instance;
}
단일 모드-게으름뱅이 호출:
@Test
public void testSingletonLazy(){
SingletonLazy.getInstance().process();
}
3.단일 모델-굶 주 린 식
/**
* @Auther: csp1999
* @Date: 2020/11/06/21:39
* @Description: -
*/
public class SingletonHungry {
//
private static SingletonHungry instance = new SingletonHungry();
private SingletonHungry(){}
/**
*
*/
public void process() {
System.out.println(" !");
}
public static SingletonHungry getInstance(){
return instance;//
}
}
단일 모드-굶 주 린 식 호출:
@Test
public void testSingletonHungry(){
SingletonHungry.getInstance().process();
}
굶 주 린 한식 단일 모드 는 클래스 를 불 러 올 때 대상 을 직접 예화 하기 때문에 라인 안전 문 제 를 고려 할 필요 가 없다.글 은 정 해진 시간 에 업데이트 되 지 않 습 니 다.가끔 은 하루 에 몇 편 을 더 업데이트 할 때 가 있 습 니 다.만약 에 복습 을 도와 지식 을 공 고 히 한다 면 지원 해 주 십시오.나중에 억 점 의 업 데 이 트 를 할 것 입 니 다!저희 의 또 다른 콘 텐 츠 에 많은 관심 부 탁 드 리 겠 습 니 다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
java 디자인 모델의 단례 모델소프트웨어 개발 과정에서 우리는 라인 탱크(threadpool), 캐시(cache), 대화상자, 선호 설정 등 하나만 필요로 하는 대상이 종종 있다.이러한 대상이 여러 개의 실례를 만들면 프로그램 행위 이상, 자원 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.