2021.10.29 TIL

pbg0205·2021년 10월 29일
0

TIL

목록 보기
1/13

스프링 동시성 문제 해결 방법

출처 : programhelper

  • 스프링이 빈은 싱글톤으로 관리되며 공유 필드를 여러 쓰레드가 동시에 접근할 경우, 동시성 문제가 발생할 수 있다.
  • 동시성 문제를 해결하기 위한 방법 중 하나가 ThreadLocal을 사용하는 방법이다.
  • ThreadLocal : 해당 Thread에서만 사용할 수 있는 값을 관리하는 공간.
    • ThreadLocal은 물건 보관 창구와 같다. 어려 사람이 보관 창구를 사용하더라도 사용자를 인식해서 사용자별 확실하게 물건을 구분하는 역할을 한다.
    • Java에서는 쓰레드 로컬을 지원하기 위한 java.lang.ThreadLocal 클래스를 제공한다.
  • (중요🚨) 반드시 쓰레드 로컬 값을 사용 후, 반드시 삭제한다.
    • 쓰레드 로컬은 쓰레드가 사용하는 고유한 정보를 관리하는 공간이다.
    • 쓰레드를 제거하고 다시 생성하기 위해서는 비용 소모가 크다. 그래서 쓰레드풀에 의해 쓰레드를 관리하여 재사용한다.
    • 이 때, 로컬 값을 제거하지 하지 않을 경우, 해당 쓰레드의 이전 사용자의 정보를 가지고 있어 현재 사용하는 사용자가 이전 사용자의 정보를 조회할 수 있는 위험이 있다.

[참고]

profile
🧑‍💻 steady developer

0개의 댓글