首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用于并发访问不可修改地图的Collections.unmodifiable地图的替代方案是什么

用于并发访问不可修改地图的Collections.unmodifiable地图的替代方案是什么
EN

Stack Overflow用户
提问于 2020-06-18 13:58:25
回答 2查看 184关注 0票数 0

随着edu.emory.mathcs.backport.java.util.Collections.unmodifiableMap的弃用,并发访问UnmodifiableMaps的替代方案是什么?

EN

回答 2

Stack Overflow用户

发布于 2020-06-18 14:02:15

不需要保护UnmodifiableMap (或任何immutable object )不受并发访问的影响。

这就是不变性的全部意义所在。

票数 4
EN

Stack Overflow用户

发布于 2020-06-18 15:36:24

Collections.unmodifiableMap将视图返回到原始地图,而不是副本

java.util.Collections.unmodifiableMap未被弃用。

至于对map的并发访问,如果使用此方法返回的引用,则没有问题。但要注意:返回的引用是原始map上的视图nack。因此,如果在使用不可修改的视图时原始映射发生了变化,那么就会出现并发问题。

Map.copyOf

我建议在Java10及以后的版本中改为调用Map.copyOf。此方法生成地图的实际副本,而不是视图。因此,结果与原始结果无关。在原始map中添加或移除条目对此方法返回的不可修改map没有影响。

代码语言:javascript
复制
Map< DayOfWeek , Person > map = new HashMap<>() ;
…
Map< DayOfWeek , Person > mapUnmod = Map.copyOf( fix 
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62443305

复制
相关文章

相似问题

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