ConcurrentHashMap

parkrootseok·2025년 2월 6일

자바

목록 보기
13/19
post-thumbnail

ConcurrentHashMap이란?

ConcurrentHashMapHashMap과 동일한 방식으로 동작하지만, 멀티 스레드 환경에서도 안전하게 사용할 수 있도록 동기화를 제공하는 클래스입니다.

특징

ConcurrentHashMap이 가지는 특징은 다음과 같습니다.

  • Java 7 이하 버전에서는 내부적으로 여러 개의 세그먼트를 통해 동시에 접근 가능하도록 설계
  • Java 8 이상 버전부터는 버킷 단위로 동기화를 적용하여 성능 개선
  • 전체 Map이 아닌 특정 버킷 수준에서 락을 적용하기 때문에, synchronized HashMap보다 성능 우수
  • null을 키나 값으로 사용 불가

장점

ConcurrentHashMap이 가지는 장점은 다음과 같습니다.

  • get()연산은 락을 사용하지 않아 높은 성능 유지
  • 멀티 스레드 환경에서 동기화된 HashMap보다 성능 우수
  • Java 8 이후에는 내부적으로 computeIfAbsent(), merge(), foreach() 등의 API 제공
    • computeIfAbsent() : 키가 없으면 계산하여 추가하는 메서드
    • merge() : 기존 값과 새 값을 병합하는 메서드
    • foreach() : 안전하게 모든 요소를 순회하는 메서드

언제, 무엇을 사용할까?

ConcurrentHashMapHashMap은 다음과 같은 경우 사용을 고려할 수 있습니다.

  • ConcurrentHashMap
    • 멀티 스레드 환경
    • 키와 값에 null을 허용하지 않는 경우
  • HashMap
    • 단일 스레드 환경
    • 키와 값에 null을 허용할 경우
profile
동료들의 시간과 노력을 더욱 빛내줄 수 있는 개발자가 되고자 노력합니다.

0개의 댓글