[java] 스레드 로컬 변수의 사용 예시
스레드 로컬 변수란?
스레드 로컬 변수는 각 스레드에게 독립적으로 할당되는 변수입니다. 이 변수는 전역 변수가 아니며, 스레드 간에 데이터를 공유하지 않습니다. 스레드 로컬 변수를 사용하면 각 스레드에서 고유한 값에 접근할 수 있으므로 스레드 간의 충돌 문제를 피할 수 있습니다.
스레드 로컬 변수의 선언 및 사용 방법
스레드 로컬 변수를 사용하기 위해서는 ThreadLocal
클래스를 이용하여 변수를 선언해야 합니다.
변수 선언
아래 코드는 ThreadLocal
변수를 선언하는 예시입니다.
private static ThreadLocal<String> threadLocalVariable = new ThreadLocal<>();
이 코드는 스레드 로컬 변수 threadLocalVariable
을 선언하고, 해당 변수 타입을 String
으로 지정했습니다.
변수 설정
스레드 로컬 변수에 값을 설정하기 위해 set()
메소드를 사용합니다. 아래 코드는 스레드 로컬 변수에 값을 설정하는 예시입니다.
threadLocalVariable.set("Hello, world!");
변수 참조
스레드 로컬 변수에 설정된 값을 참조하기 위해 get()
메소드를 사용합니다. 아래 코드는 스레드 로컬 변수의 값을 참조하는 예시입니다.
String value = threadLocalVariable.get();
System.out.println(value);
변수 초기화
스레드 로컬 변수는 각 스레드에게 독립적으로 할당되며, 각 스레드마다 초기값을 설정해야 합니다. 이를 위해서는 withInitial()
메소드를 사용하여 초기값을 설정합니다. 아래 코드는 변수를 선언하고 초기값을 설정하는 예시입니다.
private static ThreadLocal<Integer> threadLocalVariable = ThreadLocal.withInitial(() -> 0);
스레드 로컬 변수의 활용 예시
스레드 로컬 변수는 다양한 상황에서 사용될 수 있으며, 주로 다음과 같은 경우에 활용됩니다.
- 웹 애플리케이션의 사용자 인증 정보
- 트랜잭션 관리
- 로깅 및 디버깅 정보 저장
이런 경우에 스레드 로컬 변수를 사용하면 각 스레드의 독립적인 상태를 유지하면서 필요한 데이터를 관리할 수 있습니다.