该Maps.synchronizedBiMap()
方法指出
当访问任何集合视图时,用户必须在返回的地图上手动同步。
这是否包括inverse()
BiMap 的视图?例如,如果变量按照以下示例进行初始化,那么从其他线程调用是否会出现问题(例如,更改在调用 any或时inverse.put()
不可见,即使发生在之前)?get()
map
inverse
put
get
BiMap<Object, Object> map = Maps.synchronizedBiMap(HashBiMap.create());
BiMap<Object, Object> inverse = map.inverse();
如果这实际上是一个问题,是否有解决此问题的标准/推荐方法?
// 编辑
查看实现,似乎inverse()
aSynchronizedBiMap
也是 a SynchronizedBiMap
,共享相同mutex
。这是否意味着所描述的问题不存在?非常感谢 Guava Collections 专家的确认;)