为什么在非JavaFX线程上可以将文本附加到TextArea和滚动?
据我所知,对javafx场景的所有更改都必须在javafx线程上进行。但是,我运行以下代码,没有任何异常为什么在非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.
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应用程序线程上访问的要求仍然存在。您可能还对的相关问题感兴趣。您也可能对的相关问题感兴趣。