gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 01:25:04 25 4
gpt4 key购买 nike

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

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

  • 哈希表
  • Collections.synchronizedMap( map )
  • ConcurrentHashMap

据我了解,Hashtable 是一个旧的实现(扩展了过时的Dictionary 类),后来进行了调整以适应Map 界面。虽然它同步,但似乎有严重的scalability issues并且不鼓励新项目。

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

最佳答案

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

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

关于java - ConcurrentHashMap 和 Collections.synchronizedMap(Map) 有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57592057/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com