如果在一个类中我有一个 ConcurrentHashMap 实例,该实例将被多个线程修改和读取,我可能会这样定义:
public class My Class {
private volatile ConcurrentHashMap<String,String> myMap = new ConcurrentHashMap<String,String>();
...
}
将 final
添加到 myMap 字段会导致错误提示我只能使用 final 或 volatile。为什么不能两者兼得?
最佳答案
volatile
只与变量本身的修改有关,与它所引用的对象无关。有一个 final volatile
字段是没有意义的,因为 final 字段不能被修改。只需声明字段 final
就可以了。
关于java - 为什么 Object 成员变量在 Java 中不能既是 final 又是 volatile?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9328252/