volatile关键字的作用

一张图来说明一下,尚学堂的老师讲的,不错!

什么意思呢,也就是说,在线程启动后,会把所需要的数据复制到自己的工作内存中,这样减少了与主内存的交互,但是在线程内改了主存中的变量,线程的工作内存不会改变,这时候就用到了volatile关键字。

atomicInteger的addAndGet(num),也只能保证一个方法的原子性,如果方法体内多个addAndGet,那么这个方法要加上synchronized

AtomicInteger a = new AtomicInteger();
public int synchronized add(){
        a.addAndGet(1);     //如果是这一个,可以保证原子性,
        a.addAndGet(2);
        a.addAndGet(3);
  
}

...
原文地址:https://www.cnblogs.com/javage/p/9656379.html