-
카테고리
-
세부 분야
백엔드
-
해결 여부
미해결
멀티 쓰레드 문의드립니다.
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
OMG
2022.09.06
안녕하세요. 김병인님, 공식 서포터즈 OMG입니다.
지역변수는 쓰레드 safe합니다.
아래 링크를 참고해주세요 :)
https://stackoverflow.com/questions/12825847/why-are-local-variables-thread-safe-in-java
답변 1