Finalización de tareas JavaFX y subprocesos JavaFX

Acabo de comenzar a aprender sobre JavaFX hoy y estaba tratando de aprender más al hacer un clon de Snake, pero estoy teniendo problemas para enhebrar. Quería crear un hilo que actualizara la posición de la serpiente en la pantalla, pero no podía usar uno de forma normal de hilo Runnable, porque estaba usando JavaFX desde ese hilo para actualizar las posiciones de los rectángulos dibujados en la pantalla (que aprendí no puede hacer, y en su lugar debe usar Tareas, Servicios, Platform.runLater, etc.? . Mi problema es: la tarea solo parece ejecutarse una o dos veces y se cierra, sin que yo dé ninguna interrupción.

Constructor para la clase que extiende el Panel (La clase Snake extiende el Grupo):

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();
}

Siento que en realidad no entiendo qué es lo mejor que puedo hacer aquí, y lo que estoy tratando de hacer puede ser difícil. ¿Hay alguna sugerencia sobre lo que debo hacer o cómo podría solucionarlo?

Respuestas a la pregunta(1)

Su respuesta a la pregunta