여러 스레드가 동시에 같은 인스턴스의 필드 값을 변경하면서 발생하는 문제를 흔히 '동시성 문제'로 일컫는다.
특징: 여러 스레드가 같은 인스턴스의 필드에 접근해야 하기 때문에 트래픽이 적은 상황에서는 확률상 잘 나타나지 않고, 트래픽이 점점 많아질 수록 자주 발생
특히 스프링 빈 처럼 싱글톤 객체의 필드를 변경하며 사용할 때 이런 동시성 문제를 조심해야 한다.
당연히도 동시성 문제는 스레드마다 각각 다른 메모리 영역이 할당되는 지역 변수에서는 일어나지 않는다.
동시성 문제는 값을 읽기만 하면 발생하지 않는다.
(파라미터를 전달하는 방식도 OK)
스레드 로컬은 싱글톤 객체의 필드를 사용하면서 동시성 문제를 해결하는 방법들 중 하나이다.

java.lang.ThreadLocal 클래스를 제공한다.ThreadLocal.set(OOO)ThreadLocal.get()ThreadLocal.remove()스레드 로컬 사용 후 스레드 로컬에 저장된 값은 반드시 제거해 주어야 한다. 제거하지 않을 시 WAS(톰캣) 처럼 스레드 풀을 사용하는 경우 심각한 문제가 발생할 수 있다.