【发布时间】:2014-07-25 10:57:30
【问题描述】:
在使用 JavaFX 8 时,我们需要通过Platform.runLater 与 GUI 运行交互,否则如果从另一个线程运行它们会抛出异常。
但是,Platform.runLater 的实现从不检查它当前是否在 JavaFX 线程上。
我写了如下方法:
public static void runSafe(final Runnable runnable) {
Objects.requireNonNull(runnable, "runnable");
if (Platform.isFxApplicationThread()) {
runnable.run();
}
else {
Platform.runLater(runnable);
}
}
这确保它永远不会在非 fx 应用程序线程上运行。
默认实现不做这种短路有什么原因吗?
【问题讨论】:
-
很高兴在 StackOverflow 上看到好问题和好答案。
-
我希望将这个方法添加到
Platform,因为这是我在 90% 的情况下所要寻找的。span>