Aplicativo para rodar em hora marcada

Galera, tenho um aplicativo que precisa rodar todo dia em um horário. Para isso estou fazendo da seguinte forma:

    public TControlePrincipal()
    {
        Timer timer1= null;
        try
        {
            timer1= new Timer(true);
            Calendar calendario = new GregorianCalendar();
            calendario.set(Calendar.DAY_OF_MONTH,calendario.get(Calendar.DAY_OF_MONTH) + 1);
            calendario.set(Calendar.HOUR_OF_DAY, TConstantes.HORA);
            calendario.set(Calendar.MINUTE, TConstantes.MINUTO);
            calendario.set(Calendar.SECOND, 0);
            timer1.scheduleAtFixedRate(new ProcessoExecutar(), calendario.getTime(), TConstantes.PERIODO);
        }
        catch (Exception e)
        {
            log.logarEmArquivo(e, e);
        }
    }

public static void main(String[] args)
    {
        // TODO code application logic here
        new ControlePrincipal();

    }

A parte de registrar a Thread que irá executar esta funcionando corretamente, ja que uso em outro projeto. Porém como esta tudo do main ele registra a thread e finaliza a aplicação. A única forma que encontrei de manter o programa executando enquanto a thread não inicia é fazer uma POG colocando um while true após registrar a thread. Qual a maneira correta de fazer isso ??

Bom não se tu conhece ou já leu sobre mas não seria o caso de usar o Quartz ??

abraço

veja -> http://www.opensymphony.com/quartz/

Hum interessante, mas não tenho como mudar a estrutura do aplicativo no momento!! Alguém teria alguma solução ??