interview
interview copied to clipboard
博客文章问题
关于JMM的博客,https://liuzhengyang.github.io/2017/05/12/javamemorymodel/ 拜读后对Acquire-Release语义插入内存屏障实现有点疑问 原文为 `基于上面的规则,可以在volatile字段、synchronized关键字的处理上增加屏障来满足内存模型的规则
volatile store前插入StoreStore屏障 所有final字段写入后但在构造器返回前插入StoreStore volatile store后插入StoreLoad屏障 在volatile load前插入LoadLoad和LoadStore屏障 monitor enter和volatile load规则一致,monitor exit 和volatile store规则一致。`
按我的理解,是否应该是在store前该插入storestore与loadstore,为何只插入storestore,请指教。
这里确实有问题,不能防止普通读和之后volatile写的重排序。当时是参考jmm cookbook和一些书上的方式,不过搜索后似乎并没有人对此提出疑问,我再继续查下。已经修改过来了,另外还有一个错误是volatile load后添加LoadLoad和LoadStore :) 多谢指正和讨论。