衆所周知的同步建議一個最終private對象上(相對於上同步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];
有沒有更好的方法?或解決方案?