ConcurrentHashMap은 어떻게 락 없이 동시성을 처리할까요? 자바 동시성 자료구조에 대하여
ConcurrentHashMap이나 CopyOnWriteArrayList 같은 클래스를 매일 쓰지만, 내부 구현을 모르고 쓰면 프로덕션에서 미묘한 함정에 걸리기 쉽습니다. size()가 부정확하다, 이터레이터가 옛날 데이터를 보여준다, CopyOnWriteArrayList로 메모리가 폭증한다, 락 경합으로 처리량이 떨어진다 같은 현상은 모두 내부 메커니즘을 이해해야 진단할 수 있습니다. 이 영상은 매일 쓰는 동시성 컬렉션의 안쪽을 깊게 들여다봅니다. ConcurrentHashMap이 자바 8부터 세그먼트 락을 폐지하고 버킷 단위 CAS와 부분 synchronized 조합으로 어떻게 동작하는지, 빈 버킷은 락 없이 CAS로 끝내고 충돌이 있을 때만 그 한 버킷에만 락을 잡는 설계 전략을 다룹니다. 또한 버킷 길이 8 + 테이블 크기 64일 때 레드-블랙 트리로 변환되는 트리화의 푸아송 분포 근거, ForwardingNode와 helpTransfer로 stop-the-world 없이 진행되는 리사이즈, CopyOnWriteArrayList의 읽기 락프리/쓰기 시 배열 복사 트레이드오프, ConcurrentLinkedQueue의 마이클-스콧 논블로킹 알고리즘, BlockingQueue 패밀리 비교, ConcurrentSkipListMap까지 정리합니다. 후반부에는 자바 7 HashMap 멀티스레드 무한 루프 사고, ConcurrentHashMap size()의 약한 일관성으로 인한 모니터링 오차, CopyOnWriteArrayList 메모리 폭증 사고 등 실제 프로덕션 케이스 스터디 3가지와 해결책, 자료구조별 성능 벤치마크, 컬렉션 선택 의사결정 트리, 그리고 실전 체크리스트로 마무리합니다. 📌 이런 분들에게 추천합니다 ✅ ConcurrentHashMap의 size()가 왜 부정확한지 궁금했던 분 ✅ CopyOnWriteArrayList로 메모리 폭증을 만난 적 있는 백엔드 개발자 ✅ 동시성 자료구조 선택 기준이 모호한 중급 자바 개발자 ✅ 자바 면접에서 동시성 컬렉션 내부 구조를 깊이 답변하고 싶은 분 #ConcurrentHashMap #동시성컬렉션 #자바동시성 #CAS #JavaInternals
Download
0 formatsNo download links available.