SPRING/스프링
[스프링 핵심 원리-고급] 쓰레드 로컬 주의사항
노트코드
2022. 1. 22. 01:58

- 기본적으로 WAS는 쓰레드풀에서 쓰레드를 관리하고, 요청이 들어오면 쓰레드 하나를 꺼내서 사용한다.
- ThreadLocal를 사용하여 특정 데이터를 저장 처리한다.(전용 데이터를 보관중)

- 해당 작업이 끝나고 thread-A를 쓰레드풀에 반환하지만, 해당 쓰레드를 메모리에서 반환하는게 아닉 때문에,
ThreadLocal에는 이전에 사용하던 데이터가 남아있게된다. - 그다음 요청이 들어왔을때 하필 그 thread-A가 할당되면, 기존 데이터와 혼선이 발생함
해결방안?
- 요청을 받아 처리가 끝나면 ThreadLocal.remove()를 통해 꼭 제거한다.