강의

멘토링

로드맵

Inflearn Community Q&A

skydevilk1414's profile image
skydevilk1414

asked

Spring MVC Part 1 - Core technologies for backend web development

Concurrent Requests - Multi-thread

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

Written on

·

504

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 한지 아닌지 궁금합니다.

multithreadjavaMVCspring

Answer 1

1

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

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

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


감사합니다.

skydevilk1414's profile image
skydevilk1414

asked

Ask a question