首页  >  问答  >  正文

java - volatile关键字的使用误区?

在tij中的volatile中有这么一句话:

当一个域依赖于它之前的值时(如自增), 那么volatile就无法工作了. 如果某个域的值受到其他域的值的限制, 那么volatile也无法工作, 例如Range类的lower和upper边界值必须遵循lower<=upper

这段话想要表达的意思是什么?

PHP中文网PHP中文网2741 天前562

全部回复(3)我来回复

  • 怪我咯

    怪我咯2017-04-18 09:53:22

    通俗的说,标记为volatile的值,可能不可预料的被改变,因此不可以缓存,每次应该从主存中读取。
    自增操作,在读取和写入之间,这个值有可能改变,因此无法写入正确的结果。
    同样,这个值改变不受控,所以可能不满足不变式。

    回复
    0
  • 迷茫

    迷茫2017-04-18 09:53:22

    说的应该是volatile不能保证操作的原子性吧

    回复
    0
  • PHP中文网

    PHP中文网2017-04-18 09:53:22

    参阅:java中volatile关键字的含义

    回复
    0
  • 取消回复