1. HashMap
   - Thread-Safe하지 못한 클래스
   - Multi-Thread 환경에서 안전하게 사용하기 위해 Collections.synchronizedMap(hashMap) 등으로 동기화 처리 필요
   - key, value에 null 허용

2. HashTable
   - 데이터 관련 메소드에 synchronized 처리가 되어있어 멀티 스레드 환경에서 안전하게 사용 가능
   - 동기화 Lock 때문에 속도가 느리다
   - key, value에 null을 허용하지 않음

3. ConcurrentHashMap
   
- HashTable처럼 항상 동기화 Lock을 걸지는 않고,
       . 빈 해시 버킷에 데이터를 삽입하는 경우, CAS(Compared And Swap)를 이용하여 원자성을 보장한다
       . 이미 데이터가 존재하는 해시 버킷 서로 다른 스레드가 접근 할 때만 동기화 Lock이 걸리게 된다
       . HashTable보다 성능면에서 우수
   - key, value에 null을 허용하지 않음

'~2022 > Java' 카테고리의 다른 글

[Java] HashMap, TreeMap, LinkedHashMap  (0) 2021.10.25
[Java] Atomic Class  (0) 2021.10.12
[Java] DTO와 VO의 차이  (0) 2021.08.22

+ Recent posts