码上敲享录 > java高并发常见问题 > java既然volatile不能保证数据安全为何还要使用?

java既然volatile不能保证数据安全为何还要使用?

上一章章节目录下一章 2020-12-09已有1257人阅读 评论(0)

java既然volatile不能保证数据安全为何还要使用?


解决方法:

虽然volatile不能保证数据的原子性,至少可以保证了可见性和执行不重排。但如果加上cas(对比和交换)操作后就可以保证原子性了,原子类AtomicInteger就是这样保证原子性的。


一般在什么时候才使用volatile关键字呢?

● 写入变量值不依赖变量的当前值时,比如i++这种就是依赖旧的值。因为如果依赖当前值,将是获取—计算—写入三步操作,这三步操作不是原子性的,而volatile不保证原子性。

● 读写变量值时没有加锁。


0

有建议,请留言!

  • *您的姓名:

  • *所在城市:

  • *您的联系电话:

    *您的QQ:

  • 咨询问题:

  • 提 交