下面的文档更改侦听器中添加的代码是否总是在JavaFX应用程序线程中执行?
this+1
或者我是否需要添加 Platform.runLater()?
当我在那里遇到断点后查看线程堆栈时,看起来代码在JavaFX Application Thread本身中执行,但是想确认在文档中找不到任何关于此的注释。提及此文档的任何链接都非常有用。
答案 0 :(得分:4)
一般来说,更改侦听器在进行更改的同一线程上运行。当然,可能有Property
或ObservableValue
的实现在另一个线程上调用侦听器,但据我所知,没有具有此行为的默认实现。
所以简单的答案是 - 更改侦听器将在原始更改执行的任何线程上运行 话虽这么说,如果属性与JavaFX节点相关,那么应该在JavaFX线程上调用原始更改,以防止" Not on FX应用程序线程"异常。
答案 1 :(得分:1)
是的,代码在JFX-Thread上运行。
JavaFx Architecture Documentation查看“Glass Windowing Toolkit - > Threads”部分