当我在多线程环境中为一个变量分配一个新的AtomicIntegerArray实例时会发生什么?
AtomicIntegerArray array = new AtomicIntegerArray(...);
do some stuff
array = new AtomicIntegerArray(...);
在新的作业完成后,某些线程是否仍然可以访问旧实例的陈旧引用?如果是这样,我还需要将原子数组声明为volatile吗?
答案 0 :(得分:2)
如果array
对其他线程(例如类成员变量)可见,那么是的,它也需要是易失性的。
答案 1 :(得分:0)
您的array
变量似乎是一个局部变量,根据定义,多个线程无法访问该变量。
但是,如果它确实是一个实例变量,那么是的,其他线程可以看到陈旧的值,就像它们可以与任何其他实例变量一样。实例变量引用的内容不会影响访问该实例变量的方式。