티스토리 뷰

Java

[Java] ConcurrentHashMap, HashMap, Hashtable

Jane Kwon 2021. 2. 10. 17:01
반응형

 

Hashtable, HashMap, ConcurrentHashMap 클래스들은 Map 인터페이스를 구현한 콜렉션들로,

각 콜렉션들이 비슷한 역할을 하는 것 같으면서도 다르게 구현되어 있다.

기본적으로는 Map 인터페이스이기 때문에 <key, value>구조를 가진다.

 

  • Hashtable : Hashtable 은 put, get 과 같은 주요 메소드에 synchronized 키워드가 선언되어 있으며
    또한 key, value 에 null 을 허용하지 않는다.
  • HashMap : HashMap 은 주요 메소드에 synchronized 키워드가 없으며,
    또한 Hashtable 과 다르게 key, value 에 null 을 입력할 수 있다.
    하지만 HashMap 도 아래와 같이 선언하면 Thread-safe 한 맵으로 사용이 가능하다.
    Map<String, Object> map = Collections.synchronizedMap(new HashMap<String, Object>());
     
  • ConcurrentHashMap : ConcurrentHashMap 은 HashMap 을 thread-safe 하도록 만든 클래스이다.
    하지만 HashMap 과는 다르게 key, value 에 null 을 허용하지 않으며,
    또한 putIfAbsent 라는 메소드를 가지고 있다.

 

 

 

인증서에는 pem, public, private 키가 있는데인증서를 생성할 때 pem 키를 제외한

public, private 키는 데이터베이스에 저장되지 않고 사라진다.

 

하지만 사용자가 생성 완료 페이지에서 해당하는 3가지 키를 전부 다운로드 받을 수 있도록 해야하는데,

이 때 바로 thread-safe 한 ConcurrentHashMap 을 사용할 수 있다.

 

컨트롤러나 서비스에서 ConcurrentHashMap 을 선언해준 후,

ConcurrentHashMap<String, Object> certHashMap = new ConcurrentHashMap<>();

필요한 정보를 저장해주었다.

certHashMap.put(thingCertificateCreateRequestModel.getCertName(), responseModel.getData());

그런 다음 생성 완료 페이지에서 responseModel 에

앞서 저장했던 정보를 넣어준 후 clear 처리를 해주었다.

responseModel.setData(certHashMap.get(certName));
certHashMap.clear();

(참고 : docs.oracle.com/javase/8/docs/api/java/util/concurrent/ConcurrentHashMap.html)

 

 

 

 

 

반응형

'Java' 카테고리의 다른 글

[Java] Timestamp 비교  (0) 2021.02.10
[Java] 객체 정렬 방법 (Collections.sort())  (0) 2021.02.10
[Java] static 변수와 static 메소드  (0) 2021.02.10
[Java] Enum class  (0) 2021.02.10
[Java] @Builder  (0) 2021.02.10
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
글 보관함