java面试题哦吧 关注:3贴子:13
  • 1回复贴,共1

java面试题:volatile关键字能保证原子性么?

只看楼主收藏回复

vatile关键字不能保证原子性。


IP属地:广东来自Android客户端1楼2023-07-15 11:46回复
    volatile 主要有两方面的作用:1.避免指令重排2.可见性保证.
    例如,JVM 或者 JIT为了获得更好的性能会对语句重排序,但是 volatile 类型变量即使在没有同步块的情况下赋值也不会与其他语句重排序。volatile 提供 happens-before 的保证,确保一个线程的修改能对其他线程是可见的。某些情况下,volatile 还能提供原子性,如读 64 位数据类型,像 long 和 double 都不是原子的(低32位和高32位),但 volatile 类型的 double 和 long 就是原子的。


    IP属地:广东来自Android客户端2楼2023-07-15 11:46
    回复