我创建了一个小程序来理解Java Volatile关键字:
public class MultiThreadedCounter implements Runnable {
private volatile int counter = 0;
public void run() {
increment();
decrement();
}
private void decrement() {
counter = counter - 5;
System.out.println("dec = " + counter);
}
private void increment() {
counter = counter + 5;
System.out.println("inc = " + counter);
}
public static void main(String[] args) throws InterruptedException {
MultiThreadedCounter m = new MultiThreadedCounter();
Thread[] t = new Thread[100];
int count = 0;
while (true) {
if (count >= 100) {
break;
}
Thread t1 = new Thread(m);
t[count] = t1;
count++;
}
for (int i = 0; i < t.length; i++) {
t[i].start();
}
}
}
现在在这个程序中,当我多次运行程序时,我看到了不同的结果集。
然后我尝试删除volatile
变量的counter
关键字并观察到类似的结果。当我多次运行程序时,我看到了不同的结果。
Volatile
如何帮助此计划?当我们需要使用这个关键字时,我已经浏览了一些材料和SO帖子,但我没有清楚地了解这个关键字的使用情况。