并发编程(一)__volatile关键字

volatile 关键字:

          当多个线程进行操作共享数据时,可以保证内存中的数据可见。
              相较于 synchronized 是一种较为轻量级的同步策略。

                           注意:
                                       1. volatile 不具备“互斥性”:
                                           互斥性:多个线程访问时,只能有一个线程可以拿到锁。
                                       2. volatile 不能保证变量的“原子性”

原子性问题解释

      

                              i++ 的原子性问题:i++ 的操作实际上分为三个步骤“读-改-写”
                      举例:

                              int i = 10;
                                   i = i++; //10,结果为10


      下面是计算机底层的运算
       int temp = i;
       i = i + 1;
       i = temp;


       从以上三步可以看出,结果 i=10, 这是计算机底层的运算

      因为i++有读改写三步操作,所以volatile关键字在这里解决不了问题,volatile只是保证数据的都在主存中进行,
      当多线程进行同时访问的时候,并不保证这三步操作具有一个同步性

转载于:https://www.cnblogs.com/dreamHighMjc/p/8497053.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值