线程安全 原子性 操作是原子的,不可被分割的 可见性 缓存数据 cache 当一个线程修改了共享数据后,其他线程可能读取旧的数据 有序性 可能产生重排序的地方 源代码 字节码/机器码 存储系统 CPU 编译器 存储系统 CPU执行单元 重排序可提升性能 更利于cpu的流水、乱序执行 cpu的异步写入store buffer store buffer的合并写操作等 保证线程安全,原子性、可见性和有序性缺一不可