似乎您不确定Peter Lawrey的建议如何实施。它可能看起来像这样:
class YourClass { private volatile Map<String, SomeApplicationObject> map; //constructors etc. public void reload() { Map<String,SomeApplicationObject> newMap = getNewValues(); map = Collections.unmodifiableMap(newMap); }}没有并发问题,因为:
- 新地图是通过局部变量创建的,根据定义,该局部变量不会共享-
getNewValues
不需要同步或原子 - 分配给
map
原子 map
是易失的,保证其他线程可以看到更改



