-
[자바] ThreadLocal 에 대하여Programming Language/- Java 2022. 6. 1. 19:43
TL;DR
Java에서 스레드(Thread)마다 독립적으로 사용할 수 있는 변수를 말한다.
ThreadLocal 이란?
ThreadLocal 은 스레드(thread)마다 독립적으로 사용할 수 있는 변수를 말하며 해당 스레드에서 전역 변수처럼 사용할 수 있다.
다만 스레드 풀 환경인 경우 사용이 끝난 스레드의 ThreadLocal을 해제(remove) 하지 않고 반환하면 해당 스레드가 재사용될 때 이전 실행에서 사용된 변수 값이 다음 스레드 실행에 영향을 미칠 수 있다.
ThradLocal 사용법
1. ThreadLocal 객체 생성
ThreadLocal<String> threadLoal = new ThreadLocal<>();
2. ThreadLocal.set() : 현재 스레드에 변수 값을 저장
threadlocal.set("test");
3. ThreadLocal.get() : 현재 스레드에서 변수 값을 가져옴
String localStr = threadLocal.get(); System.out.println(localStr); //"test"
4. ThreadLocal.remove() : 현재 스레드에서 변수 값을 제거
threadLocal.remove(); String localStr2 = threadLocal.get(); System.out.println(localStr2); //null
위 예제 전체 코드
@Test @DisplayName("ThreadLocal Test") void threadLocal(){ ThreadLocal<String> threadLocal = new ThreadLocal<>(); threadLocal.set("test"); String localStr = threadLocal.get(); System.out.println(localStr); //test threadLocal.remove(); String localStr2 = threadLocal.get(); System.out.println(localStr2); //null }
반응형