首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MultiThreading :映射性能

MultiThreading :映射性能
EN

Stack Overflow用户
提问于 2017-06-21 14:31:38
回答 1查看 256关注 0票数 0

在multiThreading中,我想使用一个将要更新的地图,考虑到性能1. HashMap 2. ConcurrentHashMap,哪个地图会更好?另外,如果我将它设置为易失性,它的执行速度会很慢吗?

它将在Java批处理中使用大约。两千万条记录。目前,我没有在线程之间共享此映射。线程间共享map会降低性能吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-06-21 14:58:11

HashMap的性能会更好,因为它不会以任何方式进行同步。ConcurrentHashMap增加了管理并发读取和并发写入访问的开销。

也就是说,在多线程环境中,您需要负责根据需要同步对HashMap的访问,这也会降低性能。

因此,只有在用例允许对同步逻辑进行非常具体的优化时,我才会选择HashMap。否则,ConcurrentHashMap将为您节省大量计算同步的时间。

但是,请注意,即使使用ConcurrentHashMap,也需要仔细考虑所需的同步级别。ConcurrentHashMap是线程安全的,但不是完全同步的。例如,如果您绝对需要同步每个读访问和每个写访问,则仍然需要自定义逻辑,因为对于读操作,ConcurrentHashMap将提供上一次成功完成写操作后的状态。也就是说,可能仍有读操作看不到的正在进行的写操作。

至于易失性,这只能确保对该特定字段的更改将在线程之间同步。由于您可能不会更改对HashMap / ConcurrentHashMap的引用,而是在实例上工作,因此性能开销将可以忽略不计。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44668385

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档