为了账号安全,请及时绑定邮箱和手机立即绑定

通过 final 关键字来实现 双重检查(DCL) 时,为什么 局部变量 是必须的?

通过 final 关键字来实现 双重检查(DCL) 时,为什么 局部变量 是必须的?

慕后森 2019-04-21 20:14:46
在     双重检查锁定(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.是完全不需要的对吗?
                            
查看完整回答
反对 回复 2019-04-21
  • 2 回答
  • 0 关注
  • 395 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信