Java中并发哈希映射和同步哈希映射的区别


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

Synchronized hashmap(Collection.syncronizedHashMap())是 Collection 框架的一种方法。此方法对整个集合应用锁。因此,如果一个线程正在访问映射,则任何其他线程都无法访问同一映射。

序号并发哈希映射同步哈希映射
1
实现
它是一个实现并发哈希映射和可序列化接口的类。
它是 Collection 类中的一个方法。
2
锁定机制
锁定部分
锁定整个映射。
3
性能
并发哈希映射允许并发读写。因此,其性能相对优于同步映射。
多个线程无法并发访问映射。因此,其性能相对低于并发哈希映射。
4
空键
它不允许空作为键或值。
它允许空作为键。
5
并发修改异常
它不会抛出并发修改异常。
同步映射返回的迭代器会抛出并发修改异常

SynchronizedMap 示例

public class SynchronizedMapExample {
   public static void main(String[] args) {
      Map<Integer,String> laptopmap = new HashMap<Integer,String>();
      laptopmap.put(1,"IBM");
      laptopmap.put(2,"Dell");
      laptopmap.put(3,"HCL");
      // create a synchronized map
      Map<Integer,String> syncmap = Collections.synchronizedMap(laptopmap);
      System.out.println("Synchronized map is : "+syncmap);
   }
}

ConcurrentHashMap 示例

public class ConcurrentHashMapExample {
   public static void main(String[] args) {
      //ConcurrentHashMap
      Map<Integer,String> laptopmap = new ConcurrentHashMap<Integer,String>();
      laptopmap.put(1,"IBM");
      laptopmap.put(2,"Dell");
      laptopmap.put(3,"HCL");
      System.out.println("ConcurrentHashMap is: "+laptopmap);
   }
}

更新于: 2019年11月18日

7K+ 浏览量

开启你的 职业生涯

通过完成课程获得认证

开始学习
广告