728x90
반응형
singleton pattern 설명
- singleton pattern 이란 인스턴스를 하나만 만들어서 사용하는 것.
- 이렇게 하는 이유는 비즈니스 로직상 굳이 공통된 인스턴스를 사용해도 될 때. 사용할 때마다 만드는게 아니라 하나만 만들어서 재활용하면 자원 절약이 되기에
- 예를 들면, 환경 Config 등은 하나의 인스턴스만 있어도 되니 싱글톤 패턴을 이용
public class Singleton {
// Private constructor prevents instantiation from other classes
private Singleton(){}
/**
* SingletonHolder is loaded on the first execution of Singleton.getInstance()
* or the first access to SingletonHolder.INSTANCE, not before.
*/
private final static class SingletonHolder {
private final static Singleton instance = new Singleton();
}
public static Singleton getInstance() {
return SingletonHolder.instance;
}
}
- 위 소스를 설명하면, getInstance() 호출되기 전까지는 Singleton Instance 가 생성되지 않음.
- getInstance() 를 호출해야 인스턴스를 생성하는 지연 초기화 방식임.
- 만약 초기에 동시에 getInstance 에 접근한다면 어떻게 될까?
- 클래스 초기화 접근에는 동기화가 적용된다. (vm 에서 제어)
- 한 번 초기화가 일어나면 동기화가 해제 됨.
- getInstance 가 호출되서 new Singleton() 만들면, 2번 호출은 하지 않는다.
reference
'Java' 카테고리의 다른 글
하나의 JVM 은 멀티 core 를 사용할 수 있는가? (0) | 2020.11.06 |
---|---|
자바 클래스, 객체, 인스턴스란? (0) | 2020.11.04 |
람다식 정리 (0) | 2020.10.10 |
java string contains time complexity (java string contains 시간복잡도) (0) | 2020.10.06 |
java gc 모니터링 (jstat) (0) | 2020.08.29 |
댓글