【JMM】-同步原语之final重排序规则
重排序规则
写final域的重排序规则:
- 禁止对final域的写重排序到构造函数之外
编译器会在final域写之后,构造函数return之前,插入一个storestore屏障,这个屏障可以禁止处理器把final域的写重排序到构造函数之外。 - 禁止在构造函数对一个final修饰的对象的成员域的写入与随后将这个被构造的对象的引用赋值给引用变量重排序。
读final域重排序规则:
- 在一个线程中,初次读对象引用和初次读该对象包含的final域,JMM会禁止这两个操作的重排序。
处理器会在读final域操作的前面插入一个LoadLoad屏障。
参考:
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 ClawHub的技术分享!