【发布时间】:2014-06-26 02:06:34
【问题描述】:
我有一个从硬件接收信息的 JavaFX 应用程序,使用:
Platform.runLater(new Runnable() {
@Override
public void run() {
}
});
问题是,有时,如果不是总是,我想优先考虑数据收集的准确性。是否有可能暂时停止 JavaFX 线程的 runLater 替代方法?或者是否有可能有一个 JavaFX 线程是子线程的应用程序?
【问题讨论】:
-
您多久致电一次
runLater? -
我有两个监听器,一个用于接收数据,一个用于 TextArea 中的更改(作为接收数据的结果)。两者都调用 runLater。
-
TextArea 侦听器无关紧要,因为用户无法快速键入以生成大量 runLater 调用。您多久收到一次数据?我要解决的是为什么您认为 setting thread priority 会对您的情况产生任何理想的影响?
-
串行数据,波特率为 115200。
-
太疯狂了 ;-) JavaFX 脉冲默认限制为每秒 60 个,因此无需每秒调用 runLater 超过 60 次,否则您将不必要地淹没 JavaFX 事件调度程序导致在可怕的表现。无论如何,看起来您的解决方案是将输入数据批量化,然后定期将数据批量分流到 JavaFX 线程以通过 runLater() 进行处理。
标签: java multithreading user-interface javafx thread-priority