강의

멘토링

로드맵

Inflearn brand logo image

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

형씌님의 프로필 이미지
형씌

작성한 질문수

기초 탄탄! 독하게 시작하는 Java Part 3(상) : 멀티스레드와 동기화

LinkedList와 Vector 성능비교

44강, 45강을 듣고 궁금한 점이 있어 질문드립니다.

해결된 질문

작성

·

34

·

수정됨

0

안녕하세요:)
강의를 듣고 궁금한 점이 있어 질문드립니다.

 

44강과 45강에서 List에 대해 설명해 주시면서 일반적인 상황에서는 ArrayList나 LinkedList를, 동시성 문제가 고려되어야 하는 상황에서는 Vector를 사용하라고 말씀해 주셨습니다.

 

그런데 Vector는 JDK 1.x 시절에 도입된 레거시 클래스로 모든 public 메서드에 synchronized 키워드가 적용되어 있어 성능 저하와 불필요한 락 경쟁, 캐시 무효화 등의 문제가 발생할 수 있는 것으로 알고 있습니다.

 

그래서 현재는 java.util.concurrent 패키지에서 제공하는 동시성 컬렉션이나, Collections.synchronizedList, CopyOnWriteArrayList와 같은 대안들을 상황에 맞게 사용하는 것이 더 적절하다고 알고 있습니다.

 

이러한 이유로 단순히 동시성 문제를 고려해야 하는 상황에서 Vector를 권장한다라는 접근은 현재 시점에서 어울리지 않는다고 생각됩니다.

 

그럼에도 강의에서 Vector를 언급하신 특별한 의도나 배경이 있으셨는지 궁금하여 질문드립니다 :)

답변 1

1

널널한 개발자님의 프로필 이미지
널널한 개발자
지식공유자

지적하신 내용이 맞습니다. 특별한 의도가 있다기 보다는 제가 더 면밀히 살피지 않아서 생긴 오류라 하는 것이 더 타당하겠습니다. 관련 내용을 다시 살피고 검토해 강의를 수정하는 것으로 정리해 공지하겠습니다. 다만 관련 내용을 다시 검토하고 수정하는 것은 시간이 좀 걸릴 것 같습니다. 어쨌든 조속히 대응하겠습니다. 좋은 지적 감사드립니다.

그리고 감사의 뜻으로 제가 강의 중 하나를 무료로 들으실 수 있도록 해드리겠습니다. 원하시는 강의를 선택하셔서 cx8537@naver.com으로 알려주시기 바랍니다. 고맙습니다. 😄

형씌님의 프로필 이미지
형씌

작성한 질문수

질문하기