Java中HashTable和ConcurrentHashMap之间的区别

并发Hashmap是在jdk1.5中引入的类。并发哈希映射仅在添加或更新映射时在称为片段的存储桶级别应用锁。因此,并发哈希映射允许对映射进行并发读写操作。 

HashTable是在Jdk1.1中引入的线程安全的旧类。它是Map接口的基本实现。它不允许使用null键和值。它本质上是同步的,因此两个不同的线程无法同时访问。Hashtable不维护任何顺序。

序号

哈希表
并发哈希映射

1个

基本的 

 并发Hashmap是在jdk1.5中引入的类

HashTable是Jdk1.1中引入的线程安全的旧类。

2

锁定

它将锁定应用于整个集合 

并发哈希映射仅在添加或更新映射时在称为片段的存储桶级别应用锁

3

性能 

它比并发HashMap慢

比哈希表好 

4。

空值

不允许使用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());
      }
   }
}