环境说明
源码
public class VolatileAtomicDemo {
public static volatile int counter = 0;
public static void increase() {
counter++;
}
public static void main(String[] args) throws InterruptedException {
Thread[] threads = new Thread[10];
for (int i = 0; i < 10; i++) {
threads[i] = new Thread(() -> {
for (int j = 0; j < 1_000; j++) {
increase();
}
});
threads[i].start();
}
for (Thread thread : threads) {
thread.join();
}
System.out.printf("最后counter的数值为:%d", counter);
}
}
输出结果
最后counter的数值为:8733
加上synchronized修饰后
public static void increase() {
synchronized (Object.class) {
counter++;
}
}
加上synchronized后的输出结果
最后counter的数值为:10000