为什么在Java中,对象成员变量不能同时为final和volatile?
如果在一个类中我有一个ConcurrentHashMap实例,该实例将被多个线程修改并读取,则可以这样定义:
public class My Class { private volatile ConcurrentHashMap<String,String> myMap = new ConcurrentHashMap<String,String>();
...
}
添加final
到myMap字段会导致错误,提示我只能使用final或volatile。为什么不能两者兼而有之?
回答:
volatile
仅与变量本身的修改有关,与变量所指的对象无关。有一个final
volatile字段是没有意义的,因为不能修改最终字段。只需声明该字段final
,就可以了。
以上是 为什么在Java中,对象成员变量不能同时为final和volatile? 的全部内容, 来源链接: utcz.com/qa/417619.html