android进阶4step1:Android拓展——volatile 关键字

volatile 关键字

1.volatile 的作用?

在 Java 内存中,有 memory 和每个线程各自的memory。为了提高性能,线程访问的都是其所在memory 中变量的副本。这样就会容易造成在某一个时刻,同一个变量在其 memory主 memory,或者其他 memory 中变量值不一致的现象volatile 正是为了解决这个问题,用 volatile 声明的变量,使用时都会从主 memory 中取值保证了线程中访问的都是 volatile变量的最新值。

2.volatile 与 sychronized 区别?

在访问 volatile 变量时不会像 sychronized 那样执行加锁操作,这样就避免了线程阻塞, 因此 volatile 变量可以看成是一种比 sychronized 关键字更轻量级的同步机制

  • 1) volatile 是变量修饰符,而 synchronized 则作用于一段代码或方法;
  • 2) volatile 一般情况下不能代替 sychronized,因为 volatile 不能保证操作的原子性
  • 比如 volatile int i = 0,即使之后只是 i++,volatile 也只能保证他们操作的 i 是同一块内存,但不能保证 i++操作。

3.volatile 缺点?

volatile的读性能消耗几乎与普通变量相同,但是写操作稍慢,因为它需要在本地代码中插入许多内存屏障指令来保证处理器不发生乱序执行。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值