为什么在非JavaFX线程上可以将文本附加到TextArea和滚动?

为什么在非JavaFX线程上可以将文本附加到TextArea和滚动?,java,multithreading,javafx,Java,Multithreading,Javafx,据我所知,对javafx场景的所有更改都必须在javafx线程上进行。但是,我运行以下代码,没有任何异常 TextArea mainTextArea = ... new Thread(()->{ for (int i = 0; i < 10; i++){ mainTextArea.appendText(String.valueOf(i)); mainTextArea.positionCaret(mainTextArea.

据我所知,对javafx场景的所有更改都必须在javafx线程上进行。但是,我运行以下代码,没有任何异常

  TextArea mainTextArea = ...
  new Thread(()->{
        for (int i = 0; i < 10; i++){
          mainTextArea.appendText(String.valueOf(i));
          mainTextArea.positionCaret(mainTextArea.getText().length());
        }
    }).start();
TextArea main TextArea=。。。
新线程(()->{
对于(int i=0;i<10;i++){
mainTextArea.appendText(String.valueOf(i));
mainTextArea.positionCaret(mainTextArea.getText().length());
}
}).start();

我好像错过了什么。请解释一下。

仅仅因为您没有任何异常,并不意味着它是安全的。无法保证这会起作用,并且在任何时候都容易出现故障(即任意查看损坏的数据)


javafxapi尽最大努力在违反线程规则时抛出异常,但在某些情况下没有这样做(基本上,在某些操作中,检查方法在哪个线程上执行的成本太高)。历史上,在JavaFX2.2之前,根本没有抛出异常(类似于Swing);但是,作为场景图一部分的UI组件必须只能在FX应用程序线程上访问的要求仍然存在。

仅仅因为没有任何异常,并不意味着它是安全的。无法保证这会起作用,并且在任何时候都容易出现故障(即任意查看损坏的数据)


javafxapi尽最大努力在违反线程规则时抛出异常,但在某些情况下没有这样做(基本上,在某些操作中,检查方法在哪个线程上执行的成本太高)。历史上,在JavaFX2.2之前,根本没有抛出异常(类似于Swing);但是,作为场景图一部分的UI组件必须仅在FX应用程序线程上访问的要求仍然存在。

您可能还对的相关问题感兴趣。您也可能对的相关问题感兴趣。