all

ConcurrentHashMap 和 Collections.synchronizedMap(Map) 有什么区别?

发布于 2022-03-22 23:07:58

我有一个 Map 将由多个线程同时修改。

Java API 中似乎存在三种不同的同步 Map 实现:

  • Hashtable
  • Collections.synchronizedMap(Map)
  • ConcurrentHashMap

据我了解,Hashtable是一个旧的实现(扩展过时的Dictionary类),后来经过调整以适应Map接口。虽然它
同步的,但它似乎存在严重的可伸缩性问题,并且不鼓励用于新项目。

但是另外两个呢?Collections.synchronizedMap(Map)和s返回的Maps有什么区别ConcurrentHashMap?哪一种适合哪一种情况?

关注者
0
被浏览
88
1 个回答
  • 面试哥
    面试哥 2022-03-22
    为面试而生,有面试问题,就找面试哥。

    根据您的需要,使用ConcurrentHashMap. 它允许从多个线程同时修改 Map
    而无需阻塞它们。Collections.synchronizedMap(map)创建一个会降低性能的阻塞 Map,尽管可以确保一致性(如果使用得当)。

    如果您需要确保数据一致性,请使用第二个选项,并且每个线程都需要拥有最新的地图视图。如果性能很关键,则使用第一个,并且每个线程只将数据插入到映射中,读取发生的频率较低。



推荐阅读
知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看