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

조성락님의 프로필 이미지

작성한 질문수

스프링 핵심 원리 - 고급편

쓰레드 로컬 동기화 - 개발

쓰레드 로컬 데이터 저장위치 질문

작성

·

230

·

수정됨

0

ThreadLocalLogTrace는 싱글톤이잖아요?

그러므로 A와 B에서 참고하는
ThreadLocalLogTrace 참조값은
같은 값을 가리킬꺼같은데,

여기서 ThreadLocal<TraceId> 필드는
각 A쓰레드 B쓰레드 각각의 공유하지 않는
고유의 데이터영역에 저장되는것인가요?
(JVM에서 STACK과 PC Register처럼)

아니면 일종의 해시함수처럼 작용하여
A쓰레드에서의 요청이면 알아서 A의 데이터
B쓰레드에서의 요청이면 알아서 B의 데이터
를 주는것인가요?

만약 전자라면 이게 어떻게 가능한것인지?

답변 2

0

안녕하세요. 조성락님, 공식 서포터즈 OMG입니다.
강의 수강 중 궁금한 사항은 언제든 질문 남겨주세요 ^^
감사합니다.

0

조성락님의 프로필 이미지
조성락
질문자

직접 코드를 보고 이해했습니다! 감사합니다
ThreadLocal은 static으로 구현되어있어
모든 쓰레드가 참조가능하고,

내부적으로 쓰레드의 정보에 따라
내용을 저장하는 Map이 구현되어있네요