我们可以在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;
热门推荐
10 病人祝福语老师寄语简短
11 新娘生孩子祝福语简短
12 婆婆66岁祝福语简短
13 今天孩子高考祝福语简短
14 送彩票生日祝福语简短
15 分别祝福语简短情话英文
16 画室揭牌仪式祝福语简短
17 女友妈妈生日祝福语简短
18 离别赠言离职祝福语简短