为什么在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

回到顶部