싱글톤 패턴의 목적
클래스에서 생성되는 인스턴스를 항상 하나로 유지할 수 있게 보장하기 위해 사용하는 패턴
싱글톤 패턴 코드
아래는 Java 를 이용한 가장 기본적인 싱글톤의 구현이다.
public class MySingleton {
private static MySingleton ms;
private MySingleton() {}
public static MySingleton getInstance() {
if ( ms == null ) {
ms = new MySingleton();
}
return ms;
}
}
단일 스레드 환경에서는 위에 있는 코드를 사용해도 무리없이 동작한다.
다만, 다중 스레드 환경에서는 인스턴스를 저장하는 ms 가 null 임을 체크하는 과정에서 문제가 발생한다.
아래의 조건문을 여러 thread가 동시에 도달했다고 가정해 보자.
if ( ms == null )
개별 thread 는 모두 인스턴스가 없다고 생각 할 것이고, 마지막 접근한 스레드가 생성 한 인스턴스가 ms 에 저장 될 것이다.
그렇기 때문에 위에 있는 코드는 다중 스레드 환경에서는 반드시 수정이 필요하다.
'CS' 카테고리의 다른 글
리눅스 권한 유형 - setuid, setgid 그리고 sticky bit 의 개념 그리고 파일권한 대/소문자 s 의 의미 (0) | 2022.04.10 |
---|---|
Use case 의 종류 3가지 ( Brief, Casual, Fully dressed ) (0) | 2022.04.06 |
[CS/SW설계] Object oriented development - 객체지향 개발의 개념 1 (0) | 2022.03.25 |
[CS/SW설계] Basic principles of object oriented - 객체지향의 기본 원리에 대해 (0) | 2022.03.24 |
윈도우 에서 리눅스처럼 hosts 를 바꾸는 방법 - hosts file in Windows 10 (0) | 2022.03.23 |