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

goro님의 프로필 이미지
goro

작성한 질문수

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

상품 도메인 개발

멀티쓰레드 환경관련 몇 가지 질문드립니다.

작성

·

399

2

ConcurrentHashMap 이야기를 해주실 때 좀 궁금해서 찾아보며 몇 가지 궁금증이 생겨서 질문드립니다.

 

1.일반적으로 HashMap은 멀티쓰레드환경에서 사용하면 안 된다고 하는데, 이것은 '전역변수일 때만' 적용되는 개념이 맞나요?

예를들어 웹개발시 비지니스 로직 메소드(itemSave 등) 에서 new HashMap 등으로 선언 후 값을 넣어 mybatis insert 등을 한다고 할 때, 그냥 HashMap을 사용하잖아요? 이 때는 멀티쓰레드 환경이더라도, 메소드 호출시 스택에 쌓이고 인스턴스가 따로 생성(new HashMap)되니 동시성접근관련 고민을 할 필요가 없는건거죠? 

 

2.store 전역변수를 멀티쓰레드 환경에서 ConcurrentHashMap으로 선언해야한다는 것은 쓰레드들이 동시 접근시 안의 value값을 덮어쓰거나 바꾸거나 등등 동시적 작업으로 원치않는 결과를 반환할 수 있기 때문인거죠? 

 

감사합니다.

답변 1

0

안녕하세요. goro님, 공식 서포터즈 David입니다.

1. 전역변수임과 별개로 여러 스레드가 동시에 접근할 수 있는 곳(강의 내 repository의 필드)에 해당됩니다.

2. 네, 맞습니다.

감사합니다.

goro님의 프로필 이미지
goro

작성한 질문수

질문하기