原子性是指一个操作或者多个操作全部执行并且不会被打断,要么全部不执行。Java内存模型保证read、load、use、assign、store、write六种操作是原子操作,也可以认为Java的基本数据类型也具备原子性(double和float除外,这种除外几乎不会发生,开发中可以不用考虑这种除外情况)。
可见性是指一个线程修改共享变量时,其他线程立即得知这次修改。
禁止指令重排优化。