原子性(Atomicity)

原子性指一个或多个操作在CPU的执行过程中不被中断的特性。

Java的一个语句往往由多个CPU指令构成。例如x+=1;语句,由3个CPU指令构成:

  1. 将x变量从内存加载到寄存器
  2. 在寄存器中执行+1操作
  3. 将结果写入内存(或缓存)

CPU可能在任意一个CPU指令完成后执行线程切换。如下图,在两次count+=1命令执行过后,count的值却为1: