筱苗

0 声望

这家伙太懒,什么都没留下

个人动态
  • 半兽人 回复 筱苗volatile关键字解析 - java并发 中 :

    非常抱歉,留言我在整理文章的时候刚看到,回复太迟了。

    x=y,实际上包含2个操作,它先要去读取x的值,再将x的值写入工作内存,虽然读取x的值以及将x的值写入工作内存这2个操作都是原子性操作,但是合起来就不是原子性操作了。

    当第一步已经读取x的值之后,x发生了改变,那第二步的结果就已经是错误的。

    原子性的核心原则只有一个,所以体现在java底层里,动作只有一次的,叫原子性。

    2年前
  • 筱苗 回复 半兽人volatile关键字解析 - java并发 中 :

    你好~文章中关于x=y不是原子性操作这点,是不是有点歧义。oracle文档中有这样一句话: Writes to and reads of references are always atomic, regardless of whether they are implemented as 32-bit or 64-bit values.所以引用赋值本身应该是原子性的吧。但是在多线程环境下,引用的值可能会被其他线程改掉,导致结果和单线程下不太一致。

    4年前