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

최종민님의 프로필 이미지
최종민

작성한 질문수

스프링 핵심 원리 - 고급편

쓰레드 로컬 동기화 - 개발

ThreadLocal 관련 질문입니다.

작성

·

249

-2

traceId = traceId.createPreviousId(); // traceIdHolder.set(traceId.createPreviousId());
두 코드의 결과에는 큰 차이가 없는 것 같은데, 굳이 traceIdHolder.set 을 사용해야 하는 이유가 있을까요??

답변 1

0

안녕하세요. 최종민님, 공식 서포터즈 David입니다.

쓰레드 로컬을 사용하는 이유는 이전 편 필드 동기화 - 동시성 문제에서 언급된 싱글톤 빈이 상태를 가질 때 발생할 수 있는 동시성 문제를 해결하기 위함입니다. 해당 편과 쓰레드 로컬 동기화 - 개발편을 비교해보시면 왜 쓰레드 로컬로 구현된 traceIdHolder를 사용하는지 알 수 있습니다.

감사합니다.

최종민님의 프로필 이미지
최종민

작성한 질문수

질문하기