众所周知,建议在最终私有对象上进行同步(而不是在this
数据protected
成员上同步)。
但是当我的应用程序中有多个类(模块)需要在一个公共对象上同步时会发生什么?
有没有办法调和这两个看似矛盾的要求?
为了更好地解释,如果我有一个类的私有数据成员Owner
定义为:
private final Object $01pfo = new Object[0];
然后任何方法都Owner
可以简单地使用它:
protected void anyMethod() {
synchronized ($01pfo) {
// do your thing
}
}
但是如果我想$01pfo
从不同的类(比如User
)同步,我唯一的选择是$01pfo
保护还是公开?
protected final Object $01pfo = new Object[0];
有更好的方法吗?或解决方案?