1. 싱글턴Singleton
: 전역변수를 사용X / 객체를 단 하나만 생성하도록 함 / 단, 이 객체를(재사용) 어디서든 참조할 수 있도록 함
: 하나의 인스턴스만을 생성 -> getInstance() 메서드로 모든 클라이언트에게 이 인스턴스를 반환
2. 싱글턴 예시
3. 싱글턴의 문제점
: Single Thread에서 사용되는 경우에는 문제가 되지 않지만 Multi Thread환경에서는 인스턴스가 1개 이상 생성되는 경우가 발생할 수 있다(고 한다)
--> 해결방법 중 하나 : LazyHolder
4. LazyHolder
* 원리 : 객체가 필요할 때로 초기화를 미룸(Lazy Initialization)
* 설명 : Singleton 클래스에서 LazyHolder 클래스의 변수가 아직 없으므로 Singleton클래스 로딩으로 LazyHolder 클래스를 초기화 하지 않는다. 이후 Singleton 클래스의 getInstance() 메서드에서 LazyHolder.INSTANCE를 참조하면 class가 로딩되며 초기화가 진행된다.
(참고: https://javaplant.tistory.com/21 / https://link.medium.com/0tjzA2ShF4)
'Upgrade.배우고익히기' 카테고리의 다른 글
테크트리(비전공자-국비6개월) (0) | 2020.08.27 |
---|---|
내가 알고 이해하는 MyBatis (0) | 2020.04.28 |
fail-fast 기법 (0) | 2020.04.07 |
서블릿Servlet 이해 (0) | 2020.03.09 |
처음부터 개발환경 설정하기 (자바, 오라클SQLD, Tomcat, 이클립스) (0) | 2020.02.24 |