我们可以在Java中使用volatile关键字使volatile变成数组吗?
volatile修饰符指示JVM,访问volatile变量的线程应始终从内存中获取数据。即线程不应该缓存volatile变量。
访问易失性变量将同步所有在主存储器中缓存的变量副本。可变变量只能应用于对象类型或私有类型的实例变量。易失性对象引用可以为null。
示例
public class MyRunnable implements Runnable {
private volatile boolean active;
public void run() {
active = true;
while (active) { // line 1
//一些代码在这里
}
}
public void stop() {
active = false; // line 2
}
}使数组易失
尽管我们声明数组为volatile,但数组的元素没有volatile行为。
为解决此问题,Java提供了两个类,即AtomicIntegerArray和AtomicLongArray,它们表示在(各自)变量上具有原子包装的数组,这些数组的元素会自动更新。
也就是说,可以将这些类表示的数组的各个元素作为易变变量访问。这些类提供get()和set()变量来分别检索或为每个元素分配值。
由于原子包装器可用于整数类型和长类型,而其余数据类型可用,因此每次向数组分配元素时,都需要重新分配数组的引用值。
volatile int[] myArray = new int[3]; myArray [0] = 100; myArray = myArray; myArray [1] = 50; myArray = myArray; myArray [2] = 150; myArray = myArray;
热门推荐
6 保研的祝福语简短
10 年轻20岁祝福语简短
11 朋友结婚祝福语信息简短
12 女孩婚礼贺卡祝福语简短
13 30段点歌简短祝福语
14 虎年春节祝福语图文简短
15 写给后妈祝福语大全简短
16 简短回复生日祝福语
17 校长送毕业祝福语简短
18 毕业立体贺卡祝福语简短