• 카테고리

    질문 & 답변
  • 세부 분야

    백엔드

  • 해결 여부

    미해결

멀티 쓰레드 문의드립니다.

22.09.06 18:48 작성 조회수 374

0

Spring Thread-Safe를 하기 위해서는 "공유 변수"를 사용할 때 주의하라고 하셨습니다.

여기서 공유 변수의 범위는 어떻게 되는 것일까요?

public SampleService {

public SampleService { 
    public ArrayList<String> list1; // 1번
    public get() {
        ArrayList<String> list2; // 2번
    }
}

제가 생각했을 때는 1번은 멤버 변수이므로 당연히 공유 변수라고 생각되는데 2번의 경우 지역 변수라 Thread-Safe 하다고 판단됩니다.

JVM 구조 상에서도 Thread 별로 Stack 메모리를 지니기 때문입니다.

한편으로는 Singleton 형태이기 때문에 Thread 1, 2, 3에서 동시 접근 할 경우에는 Thread-UnSafe 하다고 판단되는데요.

 

2번 즉, 함수 안의 지역 변수는 Thread-Safe 한지 아닌지 궁금합니다.

답변 1

답변을 작성해보세요.

1

OMG님의 프로필

OMG

2022.09.06

안녕하세요. 김병인님, 공식 서포터즈 OMG입니다.
지역변수는 쓰레드 safe합니다.

아래 링크를 참고해주세요 :)

https://stackoverflow.com/questions/12825847/why-are-local-variables-thread-safe-in-java


감사합니다.