Notice
Recent Posts
Recent Comments
Link
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Archives
Today
Total
관리 메뉴

개발자되기 프로젝트

Thread Local - 소개 본문

인프런/[인프런] 스프링 핵심 원리 - 고급

Thread Local - 소개

Seung__ 2021. 11. 22. 14:17

1. Thread Local???


  • 쓰레드 로컬은 해당 쓰레드만 접근할 수 있는 특별한 저장소를 말한다. 
  • 쉽게 이야기해서 물건 보관 창구를 떠올리면 된다. 
  • 여러 사람이 같은 물건 보관 창구를 사용하더라도 창구 직원은 사용자를 인식해서
  • 사용자별로 확실하게 물건을 구분해준다.
  • 사용자A, 사용자B 모두 창구 직원을 통해서 물건을 보관하고, 
  • 꺼내지만 창구 지원이 사용자에 따라 보관한 물건을 구분해주는 것이다.

 

 

2. 일반적인 변수 필드


여러 Thread가 같은 인스턴스의 필드에 접근하면 처음 쓰레드가 보관한 데이터는 사라질 수 있다.

  • ThreadB가 저정하면 ThreadA가 저장한 데이터는 사라짐 ㄷㄷ

 

 

3. Thread Local


Thread Local을 사용하면 각 Thread마다 별도의 내부 저장소를 제공한다. (Thread마다 별도로 할당)

따라러 같은 인스턴스의 ThreadLocal 필드에 접근해도 문제가 없다.

 

thread-A가 "userA"값을 저장하면 ThreadLocal은 thread-A전용 보관소에 "userA" 저장

thread-B가 "userB"값을 저장하면 ThreadLocal은 thread-B전용 보관소에 "userB" 저장

 

  • 쓰레드 로컬을 통해서 데이터를 조회하는 경우
  • thread-A 가 조회하면 쓰레드 로컬은 thread-A 전용  보관소에서 userA 데이터를 반환
  • thread-B 가 조회하면 thread-B 전용 보관소에서  userB 데이터를 반환해준다.
  • 자바는 언어차원에서 쓰레드 로컬을 지원하기 위한 java.lang.ThreadLocal 클래스를 제공한다.

'인프런 > [인프런] 스프링 핵심 원리 - 고급' 카테고리의 다른 글

ThreadLocal - 개발  (0) 2021.11.22
ThreadLocal - 예제  (0) 2021.11.22
동시성 문제 - 예제 코드  (0) 2021.11.22
필드 동기화 - 동시성 문제  (0) 2021.11.20
필드 동기화 - 적용  (0) 2021.11.20
Comments