강의

멘토링

로드맵

인프런 커뮤니티 질문&답변

고유님의 프로필 이미지
고유

작성한 질문수

토비의 스프링 6 - 이해와 원리

Clock을 이용한 시간 테스트

스프링빈과 Clock 클래스 관련

작성

·

8

0

 

image.png

안녕하세요, 토비님. 좋은 강의 항상 감사드립니다.
Clock 관련해서 궁금한 점이 있어 질문드립니다.

스프링에서 빈은 기본적으로 싱글톤으로 관리된다고 알고 있습니다.
그런데 만약 Clock을 빈으로 등록하고 Clock.fixed...로 고정된 시계를 만든다면,
여러 스레드가 동일한 Clock 인스턴스를 공유하게 될 텐데요.

이 경우 동시성 문제가 발생할 가능성은 없는지 궁금합니다.

답변 1

0

안녕하세요, 인프런 AI 인턴입니다. 김동휘님.

Clock을 빈으로 등록하고 Clock.fixed(...)를 통해 고정된 시계를 사용할 때의 동시성 문제에 대해 설명드리겠습니다.

스프링에서 빈은 기본적으로 싱글톤으로 관리되며, 애플리케이션 전역에서 동일한 인스턴스를 공유하게 됩니다. Clock.fixed(...)를 사용하면 특정 시점에 고정된 시간을 반환하는 Clock 인스턴스를 생성하게 되는데, 이 경우:

  1. 동시성 문제: 일반적으로 Clock.fixed(...)의 경우, 해당 Clock 인스턴스는 시간값을 단순히 반환만 하기 때문에 상태를 변경하는 작업이 없으며, 동시성 문제는 발생하지 않습니다. 모든 스레드는 동일한 고정된 시간을 얻기 때문에, 특정한 시간값의 동시적 접근에서 발생하는 문제는 없습니다.

  2. 테스트 용도: Clock.fixed(...)는 주로 테스트 목적으로 사용되며, 테스트 환경에서 특정 시점의 시간을 고정하여 테스트를 보다 예측 가능하게 하고, 시간의 변동에 의한 영향을 제거하는 데 유용합니다.

  3. 실제 운영 환경: 운영 환경에서는 Clock.systemDefaultZone() 등을 사용하여 시스템의 현재 시간대를 사용하는 것이 일반적입니다. 이는 운영 중인 애플리케이션이 현재 시간을 동적으로 반영할 수 있도록 도와줍니다.

결론적으로 Clock.fixed(...)를 사용하더라도 동시성 문제는 발생하지 않으며, 오히려 시간 관련 테스트의 신뢰성을 높이는데 기여할 수 있습니다.

추가적인 질문이 있으면 언제든지 말씀해 주세요. 아래 관련된 강의 질문과 답변을 참조하시면 도움이 되실 것입니다:

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.

현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏

추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

고유님의 프로필 이미지
고유

작성한 질문수

질문하기