【发布时间】:2017-01-14 07:42:48
【问题描述】:
我找到了 Observable 的这个实现:
public class ObservableObject extends Observable {
private static ObservableObject instance = new ObservableObject();
public static ObservableObject getInstance() {
return instance;
}
private ObservableObject() {
}
public void updateValue(Object data) {
synchronized (this) {
// The call to setChanged marks this Observable object as having been changed; the hasChanged method will now return true.
setChanged();
notifyObservers(data);
}
}
}
我想了解的是default implementation 使用同步块和在我上面找到的代码中使用同步块有什么区别,两者都需要吗?,有没有更好的(正确)方式?
【问题讨论】:
-
我相信除了锁定同一个对象两次之外没有什么区别,因为默认实现使用 Observable 实例来获取锁,而你的类
ObservableObject是Observable的子类,在这两个实例中当前的ObservableObject实例将被锁定 -
@ManZzup 默认实现锁定数据,而给定实现锁定自身
标签: java multithreading observable observer-pattern synchronized