작성
·
450
답변 2
0
0
안녕하세요! 제가 감히 질문에 답변을 하자면 쉽게 말해서 "무상태" 라는 말은 인스턴스 변수를 가지지 않는 것을 의미합니다.
싱글톤을 사용할때는 왜 무상태로 설계를 해야하는가?
싱글톤이라는 것이 사용자 요청대로 객체를 생성하는 것이 아닌, 객체를 단 하나만 생성해서 사용하는 패턴입니다. 싱글톤 객체에 인스턴스 변수가 존재하면, 여러 스레드에서 하나의 인스턴스 변수에 접근할 수 있게됩니다. 그렇게 되면 A 스레드에서 인스턴스 변수1의 값을 사용해서 비즈니스 로직을 수행하는 동안, B 스레드에서 인스턴스 변수1의 값을 변경하면 A 스레드에서 수행중이던 비즈니스 로직에 이상이 생길 수 있겠죠?
이러한 이슈말고도 다른 이유가 있겠지만, 싱글톤을 사용할 때는 무상태로 설계해야합니다.
무상태로 설계하기 하기위해서는, 인스턴스 변수를 사용하지 않고 스레드 로컬, 파라미터를 통한 전달 등 다양한 방법이 있습니다.
감사합니다!