작성
·
115
0
[질문]
2024.08.07 까지는 정액할인, 2024.08.08 부터는 비율할인 정책이 반영되어야 하는 비즈니스 로직이 있고, 이를 스케줄러를 활용하여 2024.08.08 00:00:00에 Setter를 활용하여 비율할인을 구현한 Bean을 Injection 하여 처리하도록 구현했다고 가정하면,
이런 경우에도 아주 아주 엄밀하게 00:00:00에 모든 할인 정책이 완벽히 적용되어야 한다면, 인스턴스 변수에 volatile을 반드시 명시해줘야 하는 것인가요?
경험이 미천하여 웹프로그래밍 할 때 volatile를 사용한 것을 거의 보지 못하였고, 위의 가정처럼 아주 엄밀한 동작을 요구하는 경우는 없었고 그간 별다른 일도 없긴 하였는데, 개념을 듣고 복기해보니 장애의 요인이 될 수 있을 것 같아 여쭙습니다.
답변 1
1
안녕하세요. 김경민님
아주 엄밀하게 보면 해당 상황에 volatile을 명시해야 할 수 있습니다.
하지만 실용적인 관점에서 보면 00:00:00에 정확하게 inject하는 것 자체도 쉽지 않기 때문에(00:00:00에 inject 하는 코드가 있다고 해도 해당 코드가 정확하게 00:00:00에 멀티스레드에서 실행된다는 보장이 어렵습니다.) 이런 경우 미리 컴포넌트 들을 불러두고 시간으로 분기하는게 더 나은 선택이라 생각합니다.
감사합니다.
답변 감사합니다!