Java

ThreadLocal이란?

동교동삼거리·2020년 6월 21일·조회 3,111

1. 개요

ThreadLocal에 대해 알아본다.


2. 역사

자바 1.2 버전부터 제공되고 있다.


3. 목적

스레드 단위로 로컬 변수를 할당하는 기능이다.

일반적인 변수는 메소드, for 블록 등 특정 코드 블록 내에서 사용 가능하다.

그런데 ThreadLocal을 사용하면 스레드 영역에 변수 저장이 가능하다. 그래서 특정 스레드가 사용하는 모든 코드에서 스레드에 설정된 변수 값을 사용할 수 있게 된다.

예를 들면 세션에 저장된 정보를 다음 작업까지 전달하기 위해서 사용할 수 있다. Request에 대해 Controller 동작 전 Interceptor나 Filter를 통해 Session에 담긴 공통 정보를 ThreadLocal에 저장한다.


4. 사용법

ThreadLocal 클래스를 통해 제공된다.

  • ThreadLocal 객체를 생성한다.
  • ThreadLocal.set() 메소드로 값을 저장한다.
  • ThreadLocal.get() 메소드로 값을 읽어온다.
  • ThreadLocal.remove() 메소드로 값을 삭제한다.

5. 주의사항

Thread Pool을 사용할 때는 주의해야 한다.

데이터 사용이 끝난 후 삭제하지 않으면 해당 스레드를 재사용하는 경우 올바르지 않은 값을 참조할 수 있다.

댓글 0

로그인 후 댓글을 남길 수 있습니다.

아직 댓글이 없습니다.