标签:nal ati 数据 for 编译 构造 处理 标记 允许
重排序:是指编译器和处理器为了优化程序性能而对指令序列进行重新排序的一种手段。
当数据依赖的时候不允许产生重排序,多线程有些情况下重排序会影响语义。
volatile 定义的的对象内存对多线程之间是立马可见的,他建立了先写后读happens-before关系,常用来在多线程中进行flag标志位的判断,当A线程写入volatile变量时,会立马刷新值到主内存并且同时通知B线程修改消息,B线程中读取该对象值时会被jvm中的线程内存标记为无效再去读取一次。
final 的重排序:
java并发编程的艺术(二)---重排序与volatile、final关键字
标签:nal ati 数据 for 编译 构造 处理 标记 允许
原文地址:https://www.cnblogs.com/wengshuhang/p/10200383.html