我有这个数据流,大致:
DataGenerator -> DataFormatter -> UI
DataGenerator 是快速生成数据的东西;DataFormatter 是为了显示目的而对其进行格式化的东西;而 UI 只是一堆 Swing 元素。
我想让我的 DataGenerator 像这样:
class DataGenerator
{
final private PropertyChangeSupport pcs;
...
public void addPropertyChangeListener(PropertyChangeListener pcl) {
this.pcs.addPropertyChangeListener(pcl);
}
public void removePropertyChangeListener(PropertyChangeListener pcl) {
this.pcs.removePropertyChangeListener(pcl);
}
}
this.pcs.firePropertyChange(...)
只要我的数据生成器有新数据就打电话;然后我可以dataGenerator.addPropertyListener(listener)
在listener
负责将更改推送到 DataFormatter 然后到 UI 的地方做。
这种方法的问题在于,每秒有数千个 dataGenerator 更改(每秒 10,000 到 60,000 次,具体取决于我的情况),并且为 UI 格式化它的计算成本足够高,以至于给我的中央处理器; 实际上,我在视觉上关心的只是每秒最多 10-20 次变化。
有没有办法使用类似的方法,但在更改事件到达 DataFormatter 之前合并它们?如果我收到关于单个主题的多个更新事件,我只关心显示最新的,并且可以跳过所有以前的。