Asynchronous 从Task.onSucceeded()访问GUI元素是否安全?

Asynchronous 从Task.onSucceeded()访问GUI元素是否安全?,asynchronous,javafx-2,task,Asynchronous,Javafx 2,Task,我正在使用任务进行一些计算,此计算的输出存储为字符串。计算完成后,输出应显示在文本区域中。将任务设置用于文本区域的文本是否安全?如果没有,最好/推荐的方法是等待任务完成,然后将输出写入文本区域 感谢您的提示:-)是的,请参阅任务中的引用: 由于该任务设计用于JavaFXGUI应用程序,因此它确保对其公共属性的每次更改以及状态、错误和事件处理程序的更改通知都发生在主JavaFX应用程序线程上 您可以使用下一个代码自己验证此类情况: task.setOnSucceeded(new EventHand

我正在使用
任务
进行一些计算,此计算的输出存储为字符串。计算完成后,输出应显示在
文本区域中。将任务设置用于
文本区域
的文本是否安全?如果没有,最好/推荐的方法是等待任务完成,然后将输出写入
文本区域


感谢您的提示:-)

是的,请参阅任务中的引用:

由于该任务设计用于JavaFXGUI应用程序,因此它确保对其公共属性的每次更改以及状态、错误和事件处理程序的更改通知都发生在主JavaFX应用程序线程上

您可以使用下一个代码自己验证此类情况:

task.setOnSucceeded(new EventHandler<WorkerStateEvent>() {

        @Override
        public void handle(WorkerStateEvent t) {
            System.out.println(Thread.currentThread().getName());
        }
    });
task.setOnSucceeded(新的EventHandler(){
@凌驾
公共无效句柄(WorkerStateT事件){
System.out.println(Thread.currentThread().getName());
}
});
输出应为:

JavaFX应用程序线程


啊,很酷,我不知道我能这么容易地检查这个。对于我来说,任务描述并不完全清楚,因为“事件处理程序的更改通知”,我缺少一个清晰的“任务事件在app.thread上执行”。此外,您可以使用Platform.isFXApplicationThread()检查相同的内容: