并发编程-volatile原理和应用

Volatile特性详解

volatile是轻量级的synchronized,它在多处理器开发中保证了共享变量的可见性。

原理:1)、volatile变量在写操作指令编译为汇编指令时在后面会添加Lock前缀指令引起处理器缓存写回到内存。

           2)、一个处理器的缓存写回到内存会导致其他处理器的缓存无效。缓存一致性:多处理器下每个处理器通过嗅探在总线上传播的数据来检查自己的数据缓存的值是不是过期了,当处理器发现自己缓存的内存地址已经被修改,就会将当期的处理器的缓存行设置为无效。

使用注意特性:

class VolatilleFeaturesExample{

volatile long v1=0L;

public void set(long l){

v1=l;                      //单个的volatile变量的写   具有原子性

}

public void getAndIncrement()

     v1++;                //编译后等于下面的3个操作语义:long temp = get();  temp +=1;  set(temp);   所有不具有原子性

  }

  piblic long get(){

  return v1;  //单个的volatile变量的读  具有原子性

       }

使用特性:

1、可见性:对一个volatile的变量的读,总能看到(任意线程)对这个volatile变量的最后的写。

2、原子性:对任意单个volatile变量的读/写具有原子性,但类似于volatile++这种复合操作不具有原子性。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值