JavaFX应用程序线程。我可以找到的来源说节点上的所有更新都必须发生在这个线程中。更新应用程序线程之外的JavaFX Live节点
我想找到这个文件,如果有任何例外这个规则。 https://docs.oracle.com/javase/8/javafx/interoperability-tutorial/concurrency.htm ,因为它说:
JavaFX的场景图,其表示JavaFX应用程序的图形用户界面,是不是线程安全并且只能访问和从UI线程也被称为JavaFX的改性应用线程。
https://docs.oracle.com/javase/8/javafx/get-started-tutorial/jfx-architecture.htm#A1107438
任何“活”的场景,这是一个场景是一个窗口的一部分,必须从这个线程访问。场景图可以在后台线程中创建和操作,但是当其根节点连接到场景中的任何活动对象时,必须从JavaFX应用程序线程访问该场景图。
我经历过并非所有节点上的更新都必须在JavaFX AT上完成。更新节点的一些调用在此线程外正常工作。 例如,更新文本textProperty不需要在JavaFX AT内运行。因此,它看起来像设置工具提示,或者更改可见性/禁用/管理。
更新的标签textProperty JavaFX的AT之外将抛出
IllegalStateException异常:未对外汇应用程序线程; currentThread =任务
感谢您澄清。 Swing的文档提到它可以工作,但有不可预知的错误。 https://docs.oracle.com/javase/tutorial/uiswing/concurrency/dispatch.html 对于JavaFX没有这样的声明,只是它必须在FX应用程序线程上运行。 – DJViking
@DJViking它声明它是单线程的。假设使用该工具包的程序员理解跨多个线程使用单线程API的后果可能是合理的。 –