[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);

스레드 로컬 변수의 활용 예시

스레드 로컬 변수는 다양한 상황에서 사용될 수 있으며, 주로 다음과 같은 경우에 활용됩니다.

이런 경우에 스레드 로컬 변수를 사용하면 각 스레드의 독립적인 상태를 유지하면서 필요한 데이터를 관리할 수 있습니다.

참고 자료