해결된 질문
작성
·
42
0
다름이 아니라, JAVA로 싱글톤 패턴 구현방법 7가지 중 첫 번째 강의 예시 관련 의문점이 생겨서 질문 남깁니다.
1. 윤하라는 변수가 오르트구름에서 달라졌는지 아닌지 보는 예시를 보니, 객체는 하나인 상태이고, 객체 내부 함수에 대해, 두 Thread가 번갈아 쓰는 경쟁 상태를 보여주는 예시 아닌가요?
이건 싱글톤은 제대로 나왔는데, 함수를 번갈아 사용하면서, 내부 static 변수의 값이 덮어써지는 현상에 대한 문제를 syncronized
로 해결한 예시 같은데,
객체가 2개 생겨버린 상황에 대한 예시로 말씀 주신 걸 제가 잘못 이해한 것인지 궁금합니다.
2. 싱글톤으로 객체를 구현했다고 하더라도, 객체 내부 함수 사용에 대한 Thread 간의 경쟁상태는 여전히 개발자가 신경써서 처리해줘야 하나요? 아니면 싱글톤으로 구현되면 해당 부분은 신경 쓸 필요가 없나요?
큰 돌 선생님, 항상 좋은 강의 감사합니다.
답변 2
0
안녕하세요 수민님ㅎㅎ
오랜만이네요
객체는 하나인 상태이고, 객체 내부 함수에 대해, 두 Thread가 번갈아 쓰는 경쟁 상태를 보여주는 예시 아닌가요?
-> 네 맞습니다. 다만, 해당 부분은 자바의 멀티스레드를 설명한 부분(05:00 부터) 이며 또한 저 윤하클래스는 싱글톤이 아닙니다.
싱글톤으로 객체를 구현했다고 하더라도, 객체 내부 함수 사용에 대한 Thread 간의 경쟁상태는 여전히 개발자가 신경써서 처리해줘야 하나요? 아니면 싱글톤으로 구현되면 해당 부분은 신경 쓸 필요가 없나요?
-> 네 맞습니다. 신경써서 처리해주어야 합니다. 싱글톤은 "인스턴스가 1개만 생성됨을 보장"할 뿐이지, 그 인스턴스의 메서드나 필드가 쓰레드에 안전(Thread-safe)하다는 보장을 절대 하지 않습니다
또 질문 있으시면 언제든지 질문 부탁드립니다.
좋은 수강평과 별점 5점은 제게 큰 힘이 됩니다. :)
감사합니다.
강사 큰돌 올림.
0
안녕하세요, 인프런 AI 인턴입니다. 전수민_개인계정님.
싱글톤 패턴과 관련하여 두 가지 궁금증을 공유해 주셨네요. 현대 소프트웨어 개발에서 싱글톤 패턴은 자주 사용되지만 그 정확한 작동을 이해하는 것이 중요합니다.
싱글톤 패턴과 경쟁 상태:
synchronized
키워드는 이러한 문제가 발생하지 않도록 메서드나 블록 단위로 스레드-safe한 동기화를 제공합니다.synchronized
를 사용합니다.경쟁 상태와 싱글톤:
synchronized
키워드를 활용하여 해결할 수밖에 없습니다. 따라서 싱글톤 패턴과 synchronized
는 다른 문제이며 동시에 고려되어야 합니다.관련된 내용과 설명은 기존 질문에 대해 잘 정리된 싱글톤 패턴 동시성 문제에서 확인하실 수 있습니다. 이 답변은 싱글톤 패턴의 멀티스레드 환경에서의 처리를 다루고 있어 많은 도움이 되실 것입니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.