질문1. ThreadLocal이 필요한 이유는 ?
멀티 스레드 환경에서의 동시성 문제
- 여러 스레드가 공유 자원(e.g., static 변수, 인스턴스 변수 등)에 접근하면 데이터 충돌이 발생
- Race condition (경쟁 상태), 데이터 불일치, deadlock (교착 상태) 등의 문제가 발생할 수 있음
ThreadLocal을 활용한 동시성 문제 해결
- 스레드마다 독립적인 데이터 공간을 가짐 -> 공유 자원 없이 데이터 일관성을 유지할 수 있음
- 따라서 동기화 (synchronized) 없이 안전하게 멀티스레드 프로그래밍이 가능함
질문2. ThreadLocal의 메모리 누수 문제를 방지하는 방법은?
질문3. ThreadLocal 대신 ConcurrentHashMap을 사용할 수 있을까?
- ThreadLocal이 스레드마다 독립적인 데이터 공간을 제공하는 것을 고려하여,
각 스레드의 ID를 키로 하여 ConcurrentHashMap에 저장하면 유사한 기능 구현 가능