想象一个基于单个私有对象变量(简称为Map<Something>
)的状态构建的类,其中此类中的所有方法都是获取,设置或以其他方式修改该对象。
您认为两种同步方法中哪一项更好?也许存在第三种更好的选择。
换句话说,从内部还是外部同步更好?
答案 0 :(得分:1)
有权访问Map variable
的方法应该包含synchronized(variable) { }
块,并且对该变量的所有访问都必须在该块中。当然,variable
不能为空。
通过这种方式,您可以更好地处理时间您的代码在受保护的块中花费的时间(例如对variable
的读取或写入权限。)
其他方面:如果你的班级有多个要保护的资源,你就不能这样做,因为它们会相互干扰。