1

想象一个基于单个私有对象变量(比如说 a Map<Something>)的状态构建的类,该类中的所有方法都在获取、设置或以其他方式修改该对象。

您认为这两种同步方法中哪一种更好?也许存在第三个更好的选择。

  1. 使封装对象的类中的所有方法同步,或者在被修改的对象上同步
  2. 使所有访问封装对象的类的实例的方法同步。

换句话说,从内部同步还是从外部同步更好?

4

1 回答 1

1

那些有权访问的方法Map variable应该包含一个synchronized(variable) { }块,并且对该变量的所有访问都必须在该块中。当然,variable不能为空。

这样,您可以更好地处理代码在受保护块中花费的时间(例如对 . 的读或写访问variable)。

其他方面:如果你的班级有多个资源需要保护,你不能这样做,因为它们会相互干扰。

于 2013-01-22T16:27:47.033 回答