在哪个线程上执行 JavaFX 更改侦听器?

On which thread JavaFX change listeners are executed ?

在以下文档更改侦听器中添加的代码是否将始终在 JavaFX 应用程序线程中执行?

webEngineObject.documentProperty().addListener(new ChangeListener<Document>(){

                    @Override
                    public void changed(
                            ObservableValue<? extends Document> arg0,
                            Document arg1, Document arg2) {                     
                        //some code here
                    }

        });

或者我需要添加 Platform.runLater() ?

当我在遇到断点后查看线程堆栈时,看起来代码是在 JavaFX 应用程序线程本身中执行的,但我想确认一下,因为在文档中找不到与此相关的任何评论。任何 link 提到这一点的文档都会非常有帮助。

是的,代码在 JFX-Thread 上运行。

JavaFx Architecture Documentation 查看章节 "Glass Windowing Toolkit -> Threads"

一般来说,在进行更改的同一线程上更改侦听器 运行。当然,可能有 PropertyObservableValue 的实现,它们在另一个线程上调用侦听器,但据我所知,没有具有此行为的默认实现。

所以简单的答案是 - 更改侦听器将 运行 在执行原始更改的任何线程上。
也就是说,如果 属性 与 JavaFX 节点相关,则应该在 JavaFX 线程上调用原始更改以防止 "Not on FX application thread" 异常。