请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

volatile关键字

老师,你好,我想请问一下在创建类时为什么要加volatile这个关键字

正在回答

1回答

悟空 2019-10-01 18:49:25

volatile关键字在课程里13-1~13-5有详细介绍,

  1. volatile 修饰符适用于以下两种场景:第一种是某个属性被多个线程共享,其中有一个线程修改了此属性,其他线程可以立即得到修改后的值,比如boolean flag。第二种是作为触发器,实现轻量级同步。

  2. volatile 属性的读写操作都是无锁的,它不能替代 synchronized,因为它没有提供原子性和互斥性。因为无锁,不需要花费时间在获取锁和释放锁上,所以说它是低成本的。

  3. volatile 只能作用于属性,我们用 volatile 修饰属性,这样 compilers 就不会对这个属性做指令重排序。

  4. volatile 提供了可见性,任何一个线程对其的修改将立马对其他线程可见。volatile 属性不会被线程缓存,始终从主存中读取。

  5. volatile 提供了 happens-before 保证,对 volatile 变量 v 的写入 happens-before 所有其他线程后续对 v 的读操作。

  6. volatile 可以使得 long 和 double 的赋值是原子的。

单就本例而言,加不加volatile都可以达到同样的效果。祝国庆快乐!

3 回复 有任何疑惑可以回复我~
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信