私が観察のこの実装を見つけた:notifyObservers呼び出しを同期する必要がありますか?
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のサブクラスであるため、同じオブジェクトを2回ロックする以外に違いはないと思います。両方のインスタンスで現在のObservableObjectインスタンスがロックされます – ManZzup
@ManZzupデフォルトの実装では、指定された実装がそれ自体でロックするところでデータをロックします – dosdebug