인프런 커뮤니티 질문&답변

김병인님의 프로필 이미지
김병인

작성한 질문수

스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술

동시 요청 - 멀티 쓰레드

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

작성

·

454

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입니다.
지역변수는 쓰레드 safe합니다.

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

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


감사합니다.

김병인님의 프로필 이미지
김병인

작성한 질문수

질문하기