스프링 핵심원리 고급편 - 동시성문제[작성중]

UkJJang·2022년 1월 26일
0

각 요청마다 로그를 남기는 로그 추적기를 작성해서 bean으로 등록 후 요청마다 로그를 남기도록 구성해 보았다.

하지만

로그 추적기가 싱글톤으로 되어있기 때문에 동시성 문제가 발생한다.

  • 자세히 보면 다른 요청인 Controller가 많이 겹쳐서 동시성 문제가 일어나는 것을 확인할 수 있다.

이러한 동시성 문제를 해결하기 위해 사용하는 것이 ThreadLocal이다.

TreadLocal

  • 쓰레드 로컬은 해당 쓰레드만 접근할 수 있는 특별한 저장소를 말한다.(ex. 물품보관소 청구직원)
  • 사용자A, 사용자B 모두 보관소를 통해서 물건을 보관하고 꺼내지만 사용자에 청구직원이 보관한 물건을 구분해 주는 것이다.

ThreadLocal 주의사항

  • 값을 사용 후 꼭 제거해줘야 한다. 그냥 두게되면 WAS(톰캣)처럼 쓰레드 풀을 사용하는 경우에 심각한 문제가 발생할 수 있다.
profile
꾸준하게 성실하게

0개의 댓글