Java并发 - Final关键字
Java并发 - Final关键字
1. final方法的基础使用
1.1 final修饰变量
在声明基本类型的变量时,我们可以使用final关键字使其成为常量。一旦赋值,这个值将无法再被修改。
1 | |
1.2 引用类型的final变量
对于引用类型的变量,final关键字确保引用不会再指向其他对象,但并不表示引用指向的对象的内容不可变。
1 | |
1.3 final修饰方法
方法被final修饰的时候,该方法在子类不能被继承。private 作用域的方法可以理解为隐式的final方法,private作用域的方法同样无法被子类重写。
final方法能不能被重载???
final方法是可以被重载的!!!
1 | |
1.4 final 修饰类
使用final关键字修饰类不能被继承,这种设计在某种情况下是非常有用的,例如:为了防止某个类的子类修改其行为。
1 | |
2.0 final线程安全性
2.1 线程安全性
在多线程环境下,使用final关键字可以增强线程安全性。当一个对象被声明为final时,其状态无法被修改,从而避免了在多线程环境下的竞争条件。
1 | |
2.2 可见性
使用final关键字还可以提高变量的可见性。当一个线程写入final变量时,其他线程可以立即看到这个变化,而不需要额外的同步机制。
1 | |
2.3 指令重排序
基本数据类型:
final域写:禁止final域写与构造方法重排序,即禁止final域写重排序到构造方法之外,从而保证该对象对所有线程可见时,该对象的final域全部已经初始化过。final域读:禁止初次读对象的引用与读该对象包含的final域的重排序。
引用数据类型:
- 禁止在构造函数对一个final修饰的对象的成员域的写入与随后将这个被构造的对象的引用赋值给引用变量重排序
Java并发 - Final关键字
http://example.com/2025/12/01/Java并发-Final关键字/