ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [자바] 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
    
    }

     

     

    반응형

    댓글

Designed by Tistory.