👉 ThreadLocal은 한 Thread에서 실행되는 코드가 동일한 객체를 사용할 수 있도록 해준다.
때문에 Thread와 관련된 코드에서 파라미터를 사용하지 않고 객체를 전파하기 위한 용도로 주로 사용된다.
등 쓰레드 기준으로 동작해야 하는 기능을 구현할 때 ThreadLocal을 유용하게 사용할 수 있다.
ThreadLocal<String> threadLocalGeneric = new ThreadLocal<>();
initialValue method
를 override 하면 이 ThreadLocal 변수를 사용하는 모든 Thread의 default 값이 존재하게 된다.ThreadLocal<String> subThreadLocal = new ThreadLocal<String>() {
@Override
protected String initialValue() {
return "Init Value";
}
}
ThreadLocal<String> threadLocalGeneric = new ThreadLocal<>();
threadLocalGeneric.set("TEMP");
ThreadLocal<String> threadLocalGeneric = new ThreadLocal<>();
String result = threadLocalGeneric.get();
ThreadLocal<String> threadLocalGeneric = new ThreadLocal<>();
threadLocalGeneric.set("TEMP");
System.out.println(threadLocalGeneric.get());
// output : TEMP
threadLocalGeneric.remove();
System.out.println(threadLocalGeneric.get());
// output : null
ThreadLocal 이란 ?
ThreadLocal의 정의와 사용법
ThreadLocal 사용법과 활용
ThreadLocal 정의 및 기본 사용법 - Tutorial(Sample) - 코드 출처
Thread Local 개념과 내부 구조 - 사진 출처