是jvm atomic中的所有指令吗?

时间:2014-04-22 23:43:20

标签: jvm

我记得以前我曾在某地读过,但我现在找不到官方文件。

是jvm all atomic中的所有指令吗?

像:

iinc
iload
aload

所有原子?

1 个答案:

答案 0 :(得分:0)

您提到的字节码指令(iinciloadaload等)对操作数堆栈上的值进行操作局部变量。这些区域是线程本地的(参见JVMS 2.52.6),也就是说,这里的原子性毫无意义。即它们不是使用像lock xadd这样的原子CPU指令实现的,但没有人应该关心。

读取或写入字段和数组元素(getfieldputfilediastore等)的字节码指令是原子的,但longdouble除外类型(参见JLS 17.7)。除非声明字段为volatile,否则32位JVM可以实现(实际上,HotSpot JVM 实现)读取和写入具有两个32位加载或存储的64位字段。 / p>