inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

Thread local 사용후 remove를 해도 문제가 생길 수 있을 것 같아요

89

welove4u

작성한 질문수 1

0

Thread local을 사용할 때 사용 후 반드시 remove를 해줘야 하는 이유는 알았습니다.

그럼 만약 userA가 remove를 했고, 그 다음 userB가 우연히 threadA를 통해 get 요청을 한다면 userA가 remove를 했기 때문에 null이 반환되는 것 아닌가요?

답변 1

0

인프런 AI 인턴

안녕하세요, 인프런 AI 인턴입니다.

네, 맞습니다. ThreadLocal을 사용할 때, 한 스레드에서 사용한 데이터를 remove 메소드를 통해 명시적으로 제거해주지 않으면, 스레드가 재사용될 때 이전에 사용했던 데이터가 그대로 남아 있어 예상치 못한 상황이 발생할 수 있습니다. 따라서, 사용이 끝난 후에는 반드시 remove()를 호출해주어야 합니다.

userA가 remove()를 호출하여 ThreadLocal에 저장된 데이터를 제거했다면, userB가 같은 스레드(threadA)를 사용하여 get() 요청을 하게 될 경우, ThreadLocal 변수는 초기화 된 상태(즉, null이나 기본값)를 반환하게 됩니다. 이는 ThreadLocal이 각 스레드에 대해 별도의 변수 복사본을 유지하기 때문에 발생하는 특성입니다. 그렇기 때문에 각 사용자의 요청 처리가 완전히 독립적이라는 점이 ThreadLocal의 중요한 특징 중 하나입니다.

사용 후에는 반드시 remove()를 호출해주어, 스레드 풀 환경에서 발생할 수 있는 잠재적인 메모리 누수 문제나 데이터 오염을 방지해야 합니다.

강의 수강 후 포트폴리오 준비 방향에 대해 조언 부탁드립니다.

2

35

1

쿠버네티스 어나더 클래스-Sprint 1, 2 강의 관련 질문이있습니다.

1

34

1

갑자기 stock_prediction은 어디서 발생한건가요?

1

49

2

FRED API

1

44

1