假设我有两个线程和一个对象。其中一个线程对该对象进行赋值:
public void assign(MyObject o) {
myObject = o;
}
另一个线程正在使用该对象:
public void use() {
myObject.use();
}
变量 myObject 必须声明为 volatile 吗?我试图理解什么情况下需要使用 volatile 和何时不需要,这让我感到困惑。第二个线程是否可能在其本地内存缓存中保留对旧对象的引用?如果不是,则原因是什么?
非常感谢。