traceId = traceId.createPreviousId();
// traceIdHolder.set(traceId.createPreviousId()); 두 코드의 결과에는 큰 차이가 없는 것 같은데, 굳이 traceIdHolder.set 을 사용해야 하는 이유가 있을까요??
쓰레드 로컬을 사용하는 이유는 이전 편 필드 동기화 - 동시성 문제에서 언급된 싱글톤 빈이 상태를 가질 때 발생할 수 있는 동시성 문제를 해결하기 위함입니다. 해당 편과 쓰레드 로컬 동기화 - 개발편을 비교해보시면 왜 쓰레드 로컬로 구현된 traceIdHolder를 사용하는지 알 수 있습니다.