当我看到这段代码时,问题就出现了:
对我来说,这里的volatile是多余的,因为容器是ConcurrentHashMap,根据JavaDoc,它已经有同步puts,天啊,使用的类只实例化一次,没有任何设置或获取它的方法。
private static volatile ConcurrentHashMap<String, String> cMap = null;
static {
cMap = new ConcurrentHashMap<String, String>();
}
对我来说,这里的volatile是多余的,因为容器是ConcurrentHashMap,根据JavaDoc,它已经有同步puts,天啊,使用的类只实例化一次,没有任何设置或获取它的方法。
我唯一看到的volatile提供的是,如果我将cMap在不久的将来设置为引用一个新对象,那么这些读写将被同步。
我有什么遗漏吗?