我正在使用一个应用程序,其中大量使用了JavaFX。我注意到我们一直会收到类似于此 open jdk issue中提到的异常。这个问题提到了当您在 FX 应用程序线程外创建节点时,可能会发生异常。
我想找到任何访问 FX 对象的地方并将其放在 FX 线程之外,但应用程序太大了,无法通过检查来完成。我看到了一个类似的 Swing 问题和答案,但是没有找到类似于 JavaFX 的东西。那里最经常提到的 Swing 解决方案涉及自定义
注意:我完全意识到在 FX 线程以外与 fx 对象交互是一个坏主意。一旦我发现策略违规行为,我也完全知道可以使用
我想找到任何访问 FX 对象的地方并将其放在 FX 线程之外,但应用程序太大了,无法通过检查来完成。我看到了一个类似的 Swing 问题和答案,但是没有找到类似于 JavaFX 的东西。那里最经常提到的 Swing 解决方案涉及自定义
RepaintManager
,它是一个针对 Swing 的特定接口。
因此:如何(如果有必要)找出代码在FX应用程序线程以外的其他线程上访问JavaFX对象的位置,而不必手动检查所有应用程序的FX代码?
注意:我完全意识到在 FX 线程以外与 fx 对象交互是一个坏主意。一旦我发现策略违规行为,我也完全知道可以使用
Platform.runLater(()->{/*fx code*/});
在 FX 线程上执行操作。我的问题是关于如何找到违规行为。
Platform.runLater(new Runnable() { @Override public void run() { /* do stuff on the JFX thread */ } });
- SnakeDoc