私はこのデータフローを大まかに持っています:
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(...)
データジェネレータに新しいデータがあるときはいつでも電話してください。そうすれば、変更をDataFormatterにプッシュしてからUIにプッシュする責任がdataGenerator.addPropertyListener(listener)
ある場所で実行できます。listener
このアプローチの問題は、1秒あたり数千のdataGeneratorの変更があり(状況に応じて1秒あたり10,000〜60,000の間)、UI用にフォーマットするための計算コストが十分に高いため、不必要な負荷がかかることです。 CPU; 私が視覚的に気にするのは、1秒あたり最大10〜20回の変更だけです。
同様のアプローチを使用する方法はありますが、DataFormatterに到達する前に変更イベントを合体させますか?1つのトピックで複数の更新イベントを受け取った場合は、最新のイベントを表示するだけで、前のイベントをすべてスキップできます。