DevBoi

[Java] ConcurrentHashMap,HashTable 본문

Language/[Java]

[Java] ConcurrentHashMap,HashTable

HiSmith 2022. 3. 22. 14:46
반응형

Map interface를 구현한 3가지 구현체들의 차이는 간략하게 아래와 같다.

 

HashMap : 동기화를 지원하지 않는다

HashTable : 엄청 초반에 만들어졌고, 동기화를 지원한다.

ConcurrentHashMap: 동기화를 지원하고 HashTable 보다 성능이 좋다

 

그러면 ConcurrentHashMap이 왜 성능이 더 좋은지 알아보자

 

HashTable은 empty체크나 사이즈 체크 등 주요메서드들에 전부 syncronized처리가 되어있고,

한개의 쓰레드만 사용가능하게끔 락을 걸어놨다

예)

 

예시로, hashTable에서 put을 한다고 가정해보자 HashTable에서는 전체 메소드에 쓰레드 락이 걸려있고

ConcurrentHashTable에는 put 메서드 내, 이미 데이터가 존재하여, 교체를 해야하는 경우만

Syncronized를 걸어서 쓰레드 락을 건다.

 

메소드 전체에 제어를 하는 HashTable에 비해 메소드 중 일부에만 걸려있는 ConcurrentHashTable가 해당 사유로 인해 성능이 더 좋다

반응형

'Language > [Java]' 카테고리의 다른 글

[Java] LinkedHashSet  (0) 2022.03.25
[Java] HashSet  (0) 2022.03.25
[Java] TreeMap(이진 탐색 트리)  (0) 2022.03.22
[JAVA] LinkedHashMap  (0) 2022.03.22
[Java] HashMap  (0) 2022.03.22