Realizar funções de meia em meia hora

Pessoal, tá dificil fazer isso, eu tentei fazer vários jeitos, funcionou, mas executou várias vezes. Enfim, eu preciso executar uma tarefa de meia em meia hora, da meia noite até as seis da manhã.

Eu fiz assim, criei um timer que mostrava a hora:

public void horario() {
    new Thread() {
        @Override
        public void run() {
            new javax.swing.Timer(0, (ActionEvent e) -> {
                Date d = new Date();
                SimpleDateFormat s = new SimpleDateFormat("HH:mm:ss");
                campohora.setText(s.format(d));
                lembrar();
            }).start();
        }
    }.start();
}

aí depois fazia no meu outro método:

if(campohora.getText().equals("00:00:00"){
//executar a tarefa
}

Fiz isso da meia noite as 6 de meia em meia hora. Mas quando dava o horário, a tarefa executava mil vezes ao mesmo tempo, alguém tem outra solução?

Opa, é web? spring?

1 curtida

ele executa mil vezes pq vc falou pra ele executar mil vezes o metodo lembrar, pois ele esecuta o metodo run a cada mili segundo, ente colocar um if dentro dele para arrumar isso tipo:

Integer cnt = 30000; // se você quiser que ele inicie na esntrada coloque isso aqui, senão ponha 0
public void horario() {
    new Thread() {
        @Override
        public void run() {
            new javax.swing.Timer(0, (ActionEvent e) -> {
                if(cnt => 30000){ // colocar o horario que deseja
                   Date d = new Date();
                   SimpleDateFormat s = new SimpleDateFormat("HH:mm:ss");
                   campohora.setText(s.format(d));
                   lembrar();
                   cnt = 0;
                }
                cnt++;
            }).start();
        }
    }.start();
}
1 curtida

E aí Rodrigo, é Swing mano!

Opa, vou tentar aqui cara, valeu!!

1 curtida