Atomic action cannot stop in the middle: it either happens completely, or it doesn't happen at all. No side effects of an atomic action are visiable until the action is complete.
Java primitive types include: byte; short; int; long; float; double; boolean; char;
读和写变量的引用以及primitive types的变量的操作是原子的(除了long和double);
读和写任何用volatile关键字修饰的变量的操作是原子的(包括long和double);
Primitive 类型并不能完全消除同步错误,原子操作有时仍需同步,使用volatile修饰能避免这些错误。(用volatile修饰的primitive types)
那么什么时候会发生这种错误呢,即在不同线程对primitive类型变量进行赋值时,这种错误是可能发生的。(只在不同线程读取primitive类型变量不会产生这种错误)