我使用 synchronized 对对象的值进行并发写/读操作。
但是,我不确定是否必须同步对象的引用,可以设置并同时获取。 即使下面的B是一个不可变对象,setter也会改变它的引用,并且可以同时调用getter。
class A {
private B b;
public setB(B b) { this.b = b; }
public getB() { return b; }
}
我是否需要同步B的setter和getter(参考)(如果是这样,下面的代码是一个很好的方法)?
class A {
private B b;
private Object bLock = new Object();
public setB(B b) { synchronized(bLock) { this.b = b; } }
public getB() { synchronized(bLock) { return b; } }
}
答案 0 :(得分:2)