Я получаю объекты данных в случайном порядке на высокой частоте, и им необходимо обновить GUI JavaFX. Тем не менее, я не хочу заполнять очередь событий javafx очень большим количеством runnables (я использую Platform.RunLater).
Я думал о том, как наилучшим образом реализовать алгоритм дросселирования.
- Было бы лучше иметь отдельный поток GUIUpdater, который проверяет, например, блокирующую очередь для новых объектов, а затем спит, например, на 30 мс, а затем снова проверяет в бесконечном цикле? В таком случае будет ли блокирующая очередь оптимальной структурой данных? Обратите внимание: мне нужен только последний объект данных, а blockingQueue - очередь FIFO, и я не могу выбрать только последнюю запись.
- Или - было бы лучше просто просто обновить GUI с помощью Platform.RunLater, если nanoTime-startTime > 30ms? В этом случае мне не нужен отдельный поток для выполнения вызова Platform.RunLater. Однако, если обновление получено, когда 30 мс не прошло, а затем никакие обновления не получены в течение некоторого времени, последнее обновление не будет отображаться в графическом интерфейсе.
Любые предложения по разработке короткого, эффективного способа разработки алгоритма дросселирования для платформы JavaFX Platform.RunLater GUI?