当我将一个新的AtomicIntegerArray实例赋给多线程环境中的一个变量时会发生什么?
AtomicIntegerArray array = new AtomicIntegerArray(...);
do some stuff
array = new AtomicIntegerArray(...);在新的赋值之后,一些线程是否仍然会访问对旧实例的过时引用?如果是这样,我是否也需要将原子数组声明为易失性?
发布于 2011-07-15 00:32:54
如果array对其他线程可见(例如,类成员变量),那么是的,它也需要是易失性的。
发布于 2011-07-15 00:54:37
您的array变量似乎是一个局部变量,根据定义,该变量不能被多个线程访问。
但是,如果它真的是一个实例变量,那么是的,其他线程可以看到陈旧的值,就像它们可以看到任何其他实例变量一样。实例变量引用的内容不会影响访问该实例变量的方式。
https://stackoverflow.com/questions/6696529
复制相似问题