Drosselung von Javafx-GUI-Updates
Ich erhalte Datenobjekte zu zufälligen Zeiten mit hoher Frequenz und muss die JavaFX-GUI damit aktualisieren. Ich möchte die javafx-Ereigniswarteschlange jedoch nicht mit einer sehr großen Anzahl von ausführbaren Dateien füllen (ich verwende Platform.RunLater).
Ich habe darüber nachgedacht, wie man einen Drosselungsalgorithmus am besten implementiert.
Wäre es am besten, einen separaten GUIUpdater-Thread zu haben, der zum Beispiel eine Blockierungswarteschlange auf neue Objekte überprüft und dann zum Beispiel 30 ms ruht und dann in einer Endlosschleife erneut überprüft? Wäre in diesem Fall eine Blockierungswarteschlange die optimale Datenstruktur? Bitte beachten Sie, dass ich nur das neueste Datenobjekt benötige und die blockingQueue eine FIFO-Warteschlange ist und ich nicht nur den neuesten Eintrag auswählen kann.Oder - wäre es besser, einfach die GUI mit Platform.RunLater zu aktualisieren, wenn nanoTime-startTime> 30ms ist? In diesem Fall benötige ich keinen separaten Thread, um den Platform.RunLater-Aufruf auszuführen. Wenn jedoch ein Update empfangen wird, nachdem 30 ms verstrichen sind, und dann einige Zeit lang keine Updates empfangen wurden, wird das letzte Update nicht in der GUI angezeigt.Haben Sie Vorschläge, wie Sie einen Drosselungsalgorithmus für JavaFX Platform.RunLater-GUI-Updates auf eine kurze, effiziente Weise entwerfen können?