我想了解为什么声明为 final 的引用不能声明为 Volatile。关于 SO [ Why can an Object member variable can not be both final and volatile in Java?
[1]:为什么Java中的Object成员变量不能既是final又是volatile?但我不确定该答案是否理解 FINAL。
现在 final 变量的状态在它被初始化后肯定可以改变。只有引用不能初始化到另一个对象。
例如,考虑以下成员变量
final StringBuilder sb = new StringBuilder("CAT");
现在另一个线程将 sb 更改为:
sb.append("S");
如果此变量为 Non-Volatile ,则此更改是否可用于根据 Java 内存模型的不同线程?
编辑:我将 StringBuffer 更改为 StringBuilder 以使某些人清楚我的观点。