[RESOLVIDO] Ajuda com cronômetro usando Timer

Bom dia !
Estou criando um cronômetro que ele inicia quando uma determinada variável se torna true e o cronômetro só pode parar quando esta variável se tornar false, mas na verdade esse cronômetro é visualizado num JLabel. Só que ele pode inciaa várias vezes em JLabel diferentes.
Exemplo:

A variável x se tornou true então inicia-se o cronometro no JLabel de numero 1
A variável y se tornou true então inicia-se o cronometro no JLabel de numero 2
A variável z se tornou true então inicia-se o cronometro no JLabel de numero 3

O cronometro pode executar diversas vezes em Labels diferentes e cada um tem que parar independentes só quando a sua variável se tornar false.
Consegui fazer a classe que gera o cronômetro, mas não consigo parar o cronômetro independentes.
Como fasso para pará-los?

public void Cronometro(final JLabel label) {        

        final Timer timer = new Timer();   

        TimerTask tarefa = new TimerTask() {

            int hora = 0;
            int minuto = 0;
            int segundo = 0;

            public void run() {
                try {
                    
                        label.setText(hora + ":" + minuto + ":" + segundo);
                        segundo++;
                        if (segundo == 60) {
                            segundo = 0;
                            minuto++;
                            if (minuto == 60) {
                                minuto = 0;
                                hora++;
                                if (hora == 60) {
                                    hora = 0;
                                }
                            }
                        } 
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        };
timer.schedule(tarefa, 1000,1000);
}

Trabalhei pouco com threads, mas acredito que a solução seja fazer uma Tread para cada jLabel.

A classe timertask tem um método chamado cancel. Se você guardar a referência para o objeto timertask em algum lugar antes de chamar o método schedule você pode mais tarde chamar o método cancel para fazer com que essa tarefa não seja mais executada.

Vou tentar isso, obrigado pela ajudas. Se eu consegui eu posto a solução !

Consegui.
Obrigado !!!
A Solução estava na minha cara e eu não estava enchergando…

Guardei a referencia do TimerTask e do Timer, criando as variáveis para cada JLabel diferente.
Exemplo:

TimerTask tarefa1;  -  que se refere ao JLabel1;
TimerTask tarefa2;  -  que se refere ao JLabel2;
TimerTask tarefa3;  -  que se refere ao JLabel3;

Timer timer1 = new Timer();   -  que se refere ao JLabel1
Timer timer2 = new Timer();   -  que se refere ao JLabel2
Timer timer3 = new Timer();   -  que se refere ao JLabel3

public void Cronometro(final JLabel label, final boolean estado, TimerTask t, Timer timer) { 

        t = new TimerTask() {

            int hora = 0;
            int minuto = 0;
            int segundo = 0;

            @Override
            public void run() {
                try {
                    
                        label.setText(hora + ":" + minuto + ":" + segundo);
                        segundo++;
                        if (segundo == 60) {
                            segundo = 0;
                            minuto++;
                            if (minuto == 60) {
                                minuto = 0;
                                hora++;
                                if (hora == 60) {
                                    hora = 0;
                                }
                            }
                        } 
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        };
        if(label.getText().isEmpty()==true && estado==true)
            {
            timer.schedule(t, 1000,1000);
            }
            else
                {
                if(label.getText().isEmpty()==false && estado==false)
                    {
                    t.cancel();
                    timer.cancel(); 
                    label.setText("");
                    }
                }
    }

[RESOLVIDO]