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 |