gpt4 book ai didi

JavaFX 类中不使用线程

转载 作者:太空宇宙 更新时间:2023-11-04 10:21:10 25 4
gpt4 key购买 nike

到目前为止,在我见过的所有 JavaFX 示例中,代码都使用某种形式的线程,无论是通过扩展应用程序还是执行以下操作:

SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
initAndShowGUI(); //arbitrary function
}
});

在主方法中。我想知道是否可以避免所有这些并创建一个可以在主类中调用的独立 JavaFX 类。 (主类确实使用了线程)。

例如,我正在尝试绘制一些图 block ,然后使用 PerspectiveCamera。但是,我希望创建的投影/ View 写入单独的类中,然后在主类中调用该类的实例。

最佳答案

如果您的代码正在接触/初始化 JavaFX 组件,则它必须使用 JavaFX 平台线程。没有办法解决这个问题,JavaFX 必须在这种情况下才能正常工作(否则您可能会遇到各种与线程相关的奇怪错误。)

Swing 也是如此,不过在 JavaFX 中,这往往会强制执行得更彻底,如果您触摸了错误线程中的某些内容,则会引发异常。这是一件好事,因为在大型 Swing 项目中,缺乏执行可能会是一场噩梦 - 您可以轻松地花费几天的时间来追踪错误的根源,直到在错误的线程上执行 UI 操作,并且没有抛出任何警告。

您可以传递一个(实验性)VM 选项 (-Djavafx.embed.singleThread=true),该选项合并 Swing 和 JavaFX 平台线程,因此如果您同时使用这两个工具包,则无需在 UI 线程之间进行大量跳转。但是,在生产代码中使用它会带来危险。

关于JavaFX 类中不使用线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51158801/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com