原子性(Atomicity)

由于Java内存模型来直接保证的原子性变量操作包括 read,load,assign,use,store和write,

我们大致认为基本数据类型的访问读写数据是具备原子性的。

更大范围的原子性保证

如果应用场景需要一个更大范围的原子性保证,Java内存模型还提供了lock 和 unlock 操作来满足这些需求,尽管虚拟机没有把lock 和 unlock 操作直接开放给用户使用,但是却提供了更高层次的字节码指令 monitorenter 和 monitorexit 来隐式地使用这两个操作。

synchronized关键字

monitorenter 和 monitorexit 这两个字节码指令反映到java代码中就是同步块——synchronized关键字,因此在synchronized块之间的操作也具备原子性。