volatile变量小议

Java中volatile变量有如下特性:
1、编译器和运行时都会注意到这个变量是共享的,不会对它进行重排序。
2、volatile变量不会被缓存到寄存器,因此读取volatile类型的变量时总会返回[color=red]最新[/color]写入的值。
3、volatile变量是一种比sychronized关键字轻量级的同步机制。
4、一般用来作为程序标示(开关)使用,如下:

private volatile boolean asleep;
...
while(!asleep){
....;
}

5、volatile可以保持变量的可见性、但不能保证原子性。

private volatile int a=0;// a 只可能为1或0,它只是作为一个标示,用volatile可以保证可见性
while(a!=0){
.....
a=1;
}

//---------------------------------
private volatile int a=0;
while(a<1000){
a++;// volatile不能保证a的原子性,读取-加-赋值 这三个操作应该是原子的,用volatile就不合适了
.....
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值