在 双重检查锁定(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是必须的?我个人认为此变量是可有可无的,还请有识者指点一下。
2 回答
叮当猫咪
TA贡献1776条经验 获得超12个赞
@rainbow702@FrancisZ这个问题我最近也看了,请教一下二位,你们最终的结论是:Thelocalvariablewrapperisrequiredforcorrectness.是完全不需要的对吗?
添加回答
举报
0/150
提交
取消