Java:何时清除Observable对象

时间:2015-08-10 11:18:42

标签: java design-patterns observer-pattern

我有和Observable对象共享以下对象: -

HashMap<String,HashSet<String>> data;

我有一个put函数,它在上面的数据中附加条目,并在获得足够的数据后通知观察者。

put(String k, String line){
    if (!data.containsKey(key)) {
        addNewKey(k, line);
    }else{
        data.get(key).appendToList(deviceid);
    }
    if (data.get(key).size() > writeSizePerList || data.size() > writeSizeLists || System.currentTimeMillis() > lastDumpTimestamp + waitTimeMillis) {
        setChanged();
        notifyObservers();
        lastDumpTimestamp = System.currentTimeMillis();
    }
}

但是我陷入了这个功能。一旦所有观察者在通知调用之后已经处理完毕,我需要清除数据对象。我该如何捕捉这个事件?由于可伸缩性问题,我无法继续添加数据。

修改 即使我们不清除它,问题仍然存在。我们将如何处理put函数想要更改数据的竞争条件,因为之前的通知,观察者仍在读取数据?如何处理观察者和观察者之间的速度不匹配?

0 个答案:

没有答案