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

Son원철님의 프로필 이미지
Son원철

작성한 질문수

자바 기초부터 마스터하기 with 은종쌤 (Do it 자바 프로그래밍 입문) - Part 2(마스터편)

쌍(pair)으로 자료를 관리하는 Map 인터페이스를 구현한 클래스와 그 활용

멀티 쓰레드 동기화 관련 질문입니다!

해결된 질문

작성

·

319

1

ArrayList, HashMap은 동기화가 지원이 안되지만 최적화되어 성능에 유리하고,
Vector,.HashTable은 동기화는 지원이 되지만 그만큼 느리다는 점이라는 내용이 제가 이해한 부분이 맞을까요??

그리고 추가적인 질문으로는
동기화가 실행속도와 관련이 있다면,
멀티 스레드 환경에서는
1. 쓰기 작업에서는 동기화를 적용하여 데이터 영역에 안전보장
2. 읽기 작업은 동기화를 적용하지 않아 성능 최적화

이런 방식으로 적용하면 될까요?

답변 1

2

박은종님의 프로필 이미지
박은종
지식공유자

ArrayList와 Vector에 대해서 잘 이해하신것 같습니다.

멀티 쓰레드 환경에서 공유 자원을 보호하기 위해 여러 방법이 있고, 그에 대한 오버헤드는 있습니다. 말씀하신 대로 자료를 참조만 하는 경우는 상관이 없지만, 작업이 아닌 자원의 관점에서 참조만 되는 자원이라면 동기화에 대한 고민이 없을수 있지만, 업데이트가 되는 자원이라면 읽는 메서드가 접근 할때 다른 메서드에 의해 잘못 업데이트 된 값이 참조될 수 있으므로 동기화는 자원의 관점에서 보는 것이 맞습니다.

자세한 내용은 Thread 강의를 참고하셔도 좋을것 같습니다.

Son원철님의 프로필 이미지
Son원철

작성한 질문수

질문하기