작성
·
211
답변 1
10
안녕하세요. 좋은 질문 감사합니다.
A 쓰레드가 new Settings()를 호출하고 instance 에 할당한 다음에 리턴 합니다.
B 쓰레드가 다시 new Settings()를 호출하고 instance에 할당해서 (말씀하신대로 덮어쓰고) 리턴합니다. 이때 A 쓰레드를 통해 만들어진 인스턴스는 사라지는게 아니라 instance라는 이름의 변수에 할당되는 레퍼런스만 바뀔 뿐 이전에 리턴해준 인스턴스를 어디선가 계속 참조하고 쓸 수 있습니다.
그래서 A 쓰레드에서 리턴받은 인스턴스가 한개. B 쓰레드에서 리턴받은 인스턴스 한개. 이렇게 두개가 있게 됩니다. instnace를 덮어쓴것과 별개로 쓰레드마다 다른 인스턴스를 가져다 쓰게 되는 상황이 생길테니 원하는대로 동작하지 않는 경우가 발생할 겁니다. 가령, A에서 가져간 Settings 인스턴스의 값을 아무리 변경해도 B에서 덮어쓴 Settings에 대한 변경 사항만 반영이 된다던가..
감사합니다.