前言
在Java中,当我们愿望告诉编译器某个变量在初始化以后它的值不再须要转变时,我们常常使用final润饰该变量。而甚么情形下我们会有这类需求呢?例如,当我们在B线程应用到在A线程定义的变量时,我们就必须要应用final来润饰该变量,原理是在并发情形下制止CPU的指令重排,避免对象援用被其他线程在对象被完整结构完成前拿来应用。所以在Java中,final用来润饰变量时,我们常常人为该变量的值是不能被修正的。那末真的是这样吗?下面以一个开发中遇到的case作为一个思考切入点来对该问题进行剖析。在Java中,当我们愿望告诉编译器某个变量在初始化以后它的值不再须要转变时,我们常常使用fi