Jas*_*n S 6 java swing event-queue
我有这个数据流,粗略地说:
DataGenerator -> DataFormatter -> UI
Run Code Online (Sandbox Code Playgroud)
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);
}
}
Run Code Online (Sandbox Code Playgroud)
this.pcs.firePropertyChange(...)只要我的数据生成器有新数据就调用; 然后,我可以做dataGenerator.addPropertyListener(listener)在那里listener负责推动变化着的DataFormatter,然后到用户界面.
这种方法的问题在于,每秒有数千个dataGenerator更改(根据我的情况,每秒10,000到60,000之间),并且为UI格式化它的计算成本足够高,它会给我带来不必要的负担中央处理器; 我真正关心的是每秒最多10-20次变化.
有没有办法使用类似的方法,但在变更事件到达DataFormatter之前合并它们?如果我收到关于单个主题的多个更新事件,我只关心显示最新的事件,并且可以跳过所有以前的事件.
两个想法:
PropertyChangeEvent秒。仅当最后一个事件在50毫秒之前(或任何合适的时间)被触发时,才扩展PropertyChangeSupport,覆盖public void firePropertyChange(PropertyChangeEvent evt),触发。(实际上,您应该覆盖每种fire*方法,或者至少覆盖您在方案中使用的方法,以防止创建PropertyChangeEvent。)我倾向于第二种方法。
| 归档时间: |
|
| 查看次数: |
1272 次 |
| 最近记录: |