在 双重检查锁定(DCL)的wiki 中,对于DCL提供了一种通过final关键字来实现的方式,源码如下:publicclassFinalWrapper{ publicfinalTvalue;publicFinalWrapper(Tvalue){this.value=value;}}publicclassFoo{privateFinalWrapperhelperWrapper; publicHelpergetHelper(){FinalWrapperwrapper=helperWrapper; if(wrapper==null){synchronized(this){if(helperWrapper==null){helperWrapper=newFinalWrapper(newHelper()); }wrapper=helperWrapper;}}returnwrapper.value;}}同时,文章中有如下说明:Thelocalvariablewrapperisrequiredforcorrectness.请问一下,为什么这个局部变量wrapper是必须的?我个人认为此变量是可有可无的,还请有识者指点一下。
叮当猫咪
相关分类