작성
·
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