acessando variáveis ​​e componentes de swing através de diferentes threads

Esta questão está relacionada um pouco com o que eu pergunteiAQUI. Agora, eu tenho uma classe "Controller", que consiste no método principal e todos os componentes do swing. existe uma classe chamada "VTOL" que consiste em uma variável chamada "altitude" (eu declarei essa variável volátil a partir de agora).

Aqui está uma classe que consiste em um thread que é executado em segundo plano:

import java.util.logging.Level;
import java.util.logging.Logger;

/**
 *
 * @author Vineet
 */
public class Gravity extends Thread {

    String altStr;
    double alt;
    Controller ctrl = new Controller();

    @Override
    public void run() {
        while (true) {
            alt=VTOL.altitude;
            System.out.println(alt);
            alt = alt-0.01;
            VTOL.altitude= (int) alt;
            altStr=new Integer(VTOL.altitude).toString();
            ctrl.lblAltitude.setText(altStr);
            try {
                Thread.sleep(10);
            } catch (InterruptedException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }

    }
}

Em primeiro lugar, o problema que eu estava enfrentando inicialmente era que eu não poderia atualizar o valor de "altitude" permaneceu 0 durante a execução do programa. Então eu declarei como volátil (eu não sei se é uma boa prática)

Em segundo lugar, há um jLabel na classe Controller chamado "lblAltitude", desejo atualizar seu valor como alterado neste encadeamento, mas de alguma forma isso não está acontecendo. Como eu posso fazer isso?

questionAnswers(3)

yourAnswerToTheQuestion