inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

코딩으로 학습하는 GoF의 디자인 패턴

싱글톤 패턴 2부 - 멀티 쓰레드 환경에서 안전하게 구현하는 방법

multi thread 안정성 설명하신 부분 문의 드립니다

247

하하

작성한 질문수 16

1

안녕하세요.
 
강의 56초 부분 문의 드립니다.
각 쓰레드가 다른 instance를 가지게 된다고 설명해 주셨는데요.
직관적으로 이해하면 이 때의 instance는 지역변수가 아니므로 힙 메모리를 참조하고 있으니 뒤에 오는 쓰레드가 instance에 값을 덮어쓸 것 같습니다. 메모리가 아닌 캐시를 참조한다고 해도 각 쓰레드가 같은 캐시를 참조할 수 있을 것 같아요.
 
혹시 이 경우에 각 쓰레드가 다른 instance를 각각 가지게 되는 이유가 무엇인지 궁금합니다..!

java 디자인-패턴

답변 1

10

백기선

안녕하세요. 좋은 질문 감사합니다.

A 쓰레드가 new Settings()를 호출하고 instance 에 할당한 다음에 리턴 합니다.

B 쓰레드가 다시 new Settings()를 호출하고 instance에 할당해서 (말씀하신대로 덮어쓰고) 리턴합니다. 이때 A 쓰레드를 통해 만들어진 인스턴스는 사라지는게 아니라 instance라는 이름의 변수에 할당되는 레퍼런스만 바뀔 뿐 이전에 리턴해준 인스턴스를 어디선가 계속 참조하고 쓸 수 있습니다.

그래서 A 쓰레드에서 리턴받은 인스턴스가 한개. B 쓰레드에서 리턴받은 인스턴스 한개. 이렇게 두개가 있게 됩니다. instnace를 덮어쓴것과 별개로 쓰레드마다 다른 인스턴스를 가져다 쓰게 되는 상황이 생길테니 원하는대로 동작하지 않는 경우가 발생할 겁니다. 가령, A에서 가져간 Settings 인스턴스의 값을 아무리 변경해도 B에서 덮어쓴 Settings에 대한 변경 사항만 반영이 된다던가.. 

감사합니다.

많이 사용되는 패턴의 순서를 정한다면 어떤 순서일까요?

0

128

1

@Builder에 대해 사소한 질문

0

66

1

default 기능이 있는 interface와 추상클래스의 차이

0

61

1

실무 코드에 디자인 패턴 적용 시의 '기준'에 대해 조언을 얻고 싶습니다.

0

54

1

데코레이터 패턴, before 가 O(2^n) 인 이유

0

56

0

혹시 다음강의는 언제쯤..

0

355

1

volatile 사용 이유에 대해서 여쭤보고 싶습니다!

0

642

3

Spring Security 의 ProviderManager (AuthenticationManager) 도 옵저버 패턴을 사용하고 있다고 볼 수 있을까요?

0

400

2

싱글톤 패턴을 깨트리는 방법

0

560

1

코드에 약간 오타가 있는거 같습니다.

0

444

1

싱글톤 (Singleton) 패턴 구현 방법 3 - 2번 퀴즈에 대해 질문이 있습니다.

0

575

2

안녕하세요, 강의 순서 질문드립니다.

0

690

1

스프링 시큐리티 WebSecurityConfigurerAdapter deprecated 대체 코드

0

2435

1

팩토리메소드 = 추상팩토리?

2

925

1

중재자 패턴에 관하여~

0

515

1

undo 메소드 작업중에서

1

372

1

익명클래스로 객체 생성시 의문점

0

596

1

mediator패턴에서 객체끼리 순환참조는 어떻게 해결해야할까요

0

486

1

객체간에 this를 넘기는 부분에 관련해 질문이 있습니다..

1

370

1

전략 패턴과 상태 패턴에 관련해서 질문이 있습니다.

0

290

1

플라이웨이트 패턴 3부에서 HashMap 동시성 질문입니다.

0

262

1

enum 이 이른 초기화 방법이 아니라는 것은,

0

509

1

해당 코드가 C# 에선 접근 관련 컴파일 에러가 뜹니다.

0

438

1

설계관련 궁금증이 있습니다.

0

331

0