java修饰符:Synchronize关键字

Synchronize 关键字  
   先提出问题,如果开启多线程同时操作同一实例变量,Thread-0线程从主内存中取出的值a 为 1,然后a++;  Thread-1线程也从主内存中取出的值 a 进行 a+=2操作;Thread-0存入2到主内存中,Thread-1也存入,这样就覆盖了Thread-0存入的值. 
  
   原因是在JAVA 的内存模型中,是每一个进程都有一个主内存,每个线程都有自己的内存,线程从主内存取得数据,计算后再存回到主内存中. 

   解决这个问题就可以使用 synchronize关键字. 
   使用synchronized修饰此方法后,把下面的这几个步骤当作一个原子操作:取数据,操作数据,存数据。原子操作是不能够被打断的,所以就保证了数据的一致性,这样在同一时间有线程再执行,虽然在效率上比较有影响,但是能够保证在同一时间只有一个线程能够访问到这一块内存单元。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值