在使用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应用程序线程上运行。
是否有任何原因导致默认实现没有进行此类短路处理?