Завершение задачи JavaFX и многопоточность JavaFX

Я только начал изучать JavaFX сегодня и пытался узнать больше о нем, создав клон Snake, но у меня возникли проблемы с многопоточностью. Я хотел создать поток, который обновлял бы положение змеи на экране, но не мог использовать его обычным способом Runnable, потому что я использовал JavaFX из этого потока для обновления позиций прямоугольников, нарисованных на экране (который я узнал Вы не можете это сделать, и вместо этого должны использовать Tasks, Services, Platform.runLater и т. д.?) Мой класс, из которого я создавал поток, расширяет JavaFX.scene.layout.Pane, и я пытаюсь использовать задачу для обновления положения змеи. , Моя проблема в том, что задача, кажется, запускается один или два раза и завершается, без прерываний.

Конструктор для класса, расширяющего Pane (класс Snake расширяет группу):

public GameFrame(){
    this.setPrefSize(800, 600);

    Snake snake = new Snake();
    this.getChildren().add(snake);

    taskThread = new Thread(new Task<Void>() { 
        protected Void call() throws Exception {
                while(!Thread.currentThread().isInterrupted()){
                    snake.updatePosition();
                    try{
                    Thread.sleep(1000);
                    } catch(InterruptedException e){
                        break;
                    }
                }
            return null;
        }
    });
    taskThread.start();
}

Я чувствую, что на самом деле не понимаю, что здесь лучше всего делать, и то, что я пытаюсь сделать, может быть хакерским. Есть ли какие-либо предложения о том, что мне следует делать, или как я могу это исправить?

Ответы на вопрос(1)

Ваш ответ на вопрос