随着edu.emory.mathcs.backport.java.util.Collections.unmodifiableMap的弃用,并发访问UnmodifiableMaps的替代方案是什么?
发布于 2020-06-18 14:02:15
不需要保护UnmodifiableMap (或任何immutable object )不受并发访问的影响。
这就是不变性的全部意义所在。
发布于 2020-06-18 15:36:24
Collections.unmodifiableMap将视图返回到原始地图,而不是副本
java.util.Collections.unmodifiableMap未被弃用。
至于对map的并发访问,如果使用此方法返回的引用,则没有问题。但要注意:返回的引用是原始map上的视图nack。因此,如果在使用不可修改的视图时原始映射发生了变化,那么就会出现并发问题。
Map.copyOf
我建议在Java10及以后的版本中改为调用Map.copyOf。此方法生成地图的实际副本,而不是视图。因此,结果与原始结果无关。在原始map中添加或移除条目对此方法返回的不可修改map没有影响。
Map< DayOfWeek , Person > map = new HashMap<>() ;
…
Map< DayOfWeek , Person > mapUnmod = Map.copyOf( fix https://stackoverflow.com/questions/62443305
复制相似问题