Skip to content

ThreadSafe 한 싱글톤 방식 구현 #150

@HyeokJoon

Description

@HyeokJoon

기능

현재 싱글톤 방식의 구현에서 발생할 수 있는 문제
Java 메모리 모델이 부분적으로 초기화된 객체에 대한 접근을 허용하기 때문에
공간만 할당되고 초기화가 안된 상태로 다른 스레드에서 접근이 가능하고 이 경우, 요류가 발생할 수 있다.

방안

  1. volatile 키워드를 통해 수정할 때마다 메모리에 쓰기 -> 읽을 때도 메모리에서 읽으므로 오버헤드 발생가능
  2. static 으로 초기화 -> 문제 해결 가능, 하지만 사용하지 않아도 초기화 된다는 점이 불편함
  3. static 으로 초기화 + LazyHolder 이너클래스 사용으로 래이지 로드 구현

3번으로 선택

작업 상세 내용

  • static 으로 선언
  • LazyHolder 클래스로 인스턴스 보호

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions