1、设置final变量的原理

final 原理可以对比 volatile原理

  1. public class TestFinal{
  2. final int a =20;
  3. }

字节码文件
image.png

final原理和volatile原理类似,在对 a 变量写前,会设置写屏障,保证变量的可见性与指令有序性
这样的好处是:多个线程访问a变量时,不会出现访问a=0(还未赋值)的情况,保证final变量的不可变性、唯一性

2、读取final变量的原理

读取final变量,会将变量读到线程的栈中,jvm的优化。