• 카테고리

    질문 & 답변
  • 세부 분야

    프로그래밍 언어

  • 해결 여부

    해결됨

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

23.07.07 08:06 작성 조회수 232

1

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

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

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

답변 1

답변을 작성해보세요.

2

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

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

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