Я лично, чтобы изменять UI с потока JavaFx использую либо
AnimationTimer или Platform.runLater
но в основном AnimationTimer
boolean update=false;
AnimationTimer animationTimer=new AnimationTimer() {
@Override
public void handle(long now) {
// от здесь уже процесс от JavaFx, можешь спокойно обновлять UI
if(update){
update=false;
// обычно у меня так выглядет
// TODO обновление UI
}
}
};
animationTimer.start();
runLater почему-то я пока нигде ни использовал, но пробывал
Platform.runLater(new Runnable() {
@Override
public void run() {
// здесь уже поток от JavaFx
}
});
есть еще пару способов связанный с чем-то типа Task, но его не опробовал, из за усложненности