【发布时间】:2014-06-22 16:30:36
【问题描述】:
我在随机时间以高频率接收数据对象,并且需要使用这些更新 JavaFX GUI。但是,我不想用大量可运行对象填充 javafx 事件队列(我使用 Platform.RunLater)。
我一直在思考如何最好地实现节流算法。
- 最好有一个单独的 GUIUpdater 线程来检查新对象的阻塞队列,然后休眠 30 毫秒,然后在无限循环中再次检查?在那种情况下,阻塞队列会是最优的数据结构吗?请注意,我只需要最新的数据对象,blockingQueue 是一个 FIFO 队列,我似乎不能只选择最新的条目。
- 或者 - 如果 nanoTime-startTime > 30 毫秒,只需使用 Platform.RunLater 更新 GUI 会更好吗?在这种情况下,我不需要单独的线程来执行 Platform.RunLater 调用。但是 - 如果在 30 毫秒内收到更新,然后一段时间内没有收到更新,则最后一次更新不会显示在 GUI 中。
关于如何为 JavaFX Platform.RunLater GUI 更新设计节流算法有什么建议吗?
【问题讨论】:
标签: java multithreading user-interface thread-safety javafx