Computer >> 컴퓨터 >  >> 프로그램 작성 >> Java

Java에서 HashTable과 ConcurrentHashMap의 차이점

<시간/>

Concurrent Hashmap은 jdk1.5에서 도입된 클래스입니다. 동시 해시 맵은 맵을 추가하거나 업데이트하는 동안 프래그먼트라는 버킷 수준에서만 잠금을 적용합니다. 따라서 동시 해시 맵은 맵에 대한 동시 읽기 및 쓰기 작업을 허용합니다.

HashTable은 Jdk1.1에 도입된 스레드로부터 안전한 레거시 클래스입니다. Map 인터페이스의 기본 구현입니다. null 키와 값을 허용하지 않습니다. 본질적으로 동기화되어 두 개의 다른 스레드가 동시에 액세스할 수 없습니다. Hashtable은 어떤 순서도 유지하지 않습니다.

Sr. 아니요.

해시 테이블
ConcurrentHashMap

1

기본

HashTable은 Jdk1.1에 도입된 스레드로부터 안전한 레거시 클래스입니다.

ConcurrentHashmap은 jdk1.5에서 도입된 클래스입니다.

2

잠금

전체 컬렉션에 잠금을 적용합니다.

ConcurrentHashMap은 맵을 추가하거나 업데이트하는 동안 조각이라는 버킷 수준에서만 잠금을 적용합니다.

3

성능

ConcurrentHashMap보다 느립니다.

HashTable보다 낫습니다.

4.

null 키와 값을 허용하지 않습니다.

null 키와 값을 허용합니다.

해시테이블의 예

import java.util.ArrayList;
import java.util.EnumMap;
import java.util.HashMap;
import java.util.Hashtable;
import java.util.List;
import java.util.Map;
public class HashtableExample {
   public static void main(String[] args) {
      // create Hashtable
      Hashtable map = new Hashtable();
      map.put("HCL", "100");
      map.put("DELL", "200");
      map.put("IBM", "300");
      // print the map
      for (Map.Entry m : map.entrySet()) {
         System.out.println(m.getKey() + " " + m.getValue());
      }
   }
}

ConcurrentHashMap의 예

import java.util.ArrayList;
import java.util.EnumMap;
import java.util.HashMap;
import java.util.Hashtable;
import java.util.List;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
public class ConcurrentHashMapExample {
   public static void main(String[] args) {
      // ConcurrentHashMap
      Map myMap = new ConcurrentHashMap();
      myMap.put("HCL", "1");
      myMap.put("DELL", "1");
      // print the map
      for (Map.Entry m : map.entrySet()) {
         System.out.println(m.getKey() + " " + m.getValue());
      }
   }
}