概念: final在Java中是一个保留的关键字,可以声明成员变量、方法、类以及本地变量。 一旦你将引用声明作final,你将不能改变这个引用了,编译器会检查代码,如果你试图将变量再次初始化的话,编译器会报编译错误。 final关键字的好处: (1)final关键字提高了性能。JVM和Java应用都会缓存final变量。 (2)final变量可以安全的在多线程环境下进行共享,而不需要额外的同步开销。 (3)使用final关键字,JVM会对方法、变量及类进行优化。 final原理: 写屏障保证赋值putField指令及之前不会重排序。(先写入final变量,后调用该变量引用) 读屏障保证先读引用,后读变量。 享元模式:例如包装类的常量池,连接池,线程池 String类: 通过保护性拷贝的方式来实现不可变,例如substring方法。从而实现线程安全 无状态类: 对象中没有任何成员变量,实现线程安全



