美文网首页
final关键字

final关键字

作者: 温不胜_kangle | 来源:发表于2020-05-21 21:11 被阅读0次

一、final的禁止重排序

(一)、写:在构造函数中对final域的写入,与随后把这个构造对象的引用赋值给引用变量,两者不能重排序

(1)、JMM禁止编译器把final域的写重排序到构造函数之外;

(2)、编译器会在final域写之后,构造函数return之前,插入一个storestore屏障(关于内存屏障可以看这篇文章)。这个屏障可以禁止处理器把final域的写重排序到构造函数之外。

(二)、读:初次读一个包含final域对象的引用,与随后初次读这个final域,两者之间不能重排序

在一个线程中,初次读对象引用和初次读该对象包含的final域,JMM会禁止这两个操作的重排序。(注意,这个规则仅仅是针对处理器),处理器会在读final域操作的前面插入一个LoadLoad屏障。实际上,读对象的引用和读该对象的final域存在间接依赖性,一般处理器不会重排序这两个操作。但是有一些处理器会重排序,因此,这条禁止重排序规则就是针对这些处理器而设定的。

二、final的修饰

(1)、类:不可被继承

(2)、方法:不可被复写

(3)、变量: 基本数据类型:不可被修改        

                        引用类型:引用的对象不能被别的对象引用

参考:

版权声明:本文为CSDN博主「riemann_」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。

原文链接:https://blog.csdn.net/riemann_/java/article/details/96390511

相关文章

网友评论

      本文标题:final关键字

      本文链接:https://www.haomeiwen.com/subject/jlfxahtx.html