- 기본적으로 WAS는 쓰레드풀에서 쓰레드를 관리하고, 요청이 들어오면 쓰레드 하나를 꺼내서 사용한다.
- ThreadLocal를 사용하여 특정 데이터를 저장 처리한다.(전용 데이터를 보관중)
- 해당 작업이 끝나고 thread-A를 쓰레드풀에 반환하지만, 해당 쓰레드를 메모리에서 반환하는게 아닉 때문에,
ThreadLocal에는 이전에 사용하던 데이터가 남아있게된다. - 그다음 요청이 들어왔을때 하필 그 thread-A가 할당되면, 기존 데이터와 혼선이 발생함
해결방안?
- 요청을 받아 처리가 끝나면 ThreadLocal.remove()를 통해 꼭 제거한다.
'SPRING > 스프링' 카테고리의 다른 글
[스프링 핵심 원리-고급] 템플릿 콜백 패턴 (0) | 2022.01.27 |
---|---|
[스프링 핵심 원리 -고급] 전략패턴 (0) | 2022.01.27 |
[스프링 핵심 원리-고급] 템플릿 메서드 패턴 (0) | 2022.01.25 |
[스프링 핵심 원리-고급] ThreadLocal (0) | 2022.01.21 |
[스프링 핵심 원리-고급]필드 동기화 -동시성 문제 (0) | 2022.01.21 |