Programando tarefas repetidas no Java
Em projetos do Windows Forms (Visual Studio) temos o componente Timer() quer permite programar tarefas em C#, no qual definimos um intervalo que desejamos que a tarefa seja repetida.
Já no java, não temos nenhum componente para programarmos, mas podemos usar a classe Timer().
A sintaxe do código é muito simples;
int delay = 5000; // tempo de espera antes da 1ª execução da tarefa. int interval = 1000; // intervalo no qual a tarefa será executada. Timer timer = new Timer(); timer.scheduleAtFixedRate(new TimerTask() { public void run() { System.out.println("Olá World!"); } }, delay, interval);
Com este código em mãos podemos então criar quantos métodos forem necessários, veja um exemplo de como podemos criar 2 métodos para tarefas diferentes usando o código acima;
Timer timer1 = new Timer(); Timer timer2 = new Timer(); public void Tarefa1(){ int delay = 2000; // delay de 2 seg. int interval = 5000; // intervalo de 1 seg. timer1.scheduleAtFixedRate(new TimerTask() { public void run() { JOptionPane.showMessageDialog(null, "Executei a Tarefa 1"); } }, delay, interval); } public void Tarefa2() { int delay = 0; // delay de 0 seg. int interval = 2000; // intervalo de 2 seg. timer2.scheduleAtFixedRate(new TimerTask() { public void run() { System.out.println("Olá World no console"); } }, delay, interval); }
No exemplo acima, perceba que foram criados fois objetos, timer1 e timer2 para que o código pudesse ficar mais organizado. Desta forma também podemos parar os timers criando uma outra classe;
public void PararTarefas(){ // Encerra as tarefas timer1.cancel(); timer2.cancel(); }
Agora basta chamar os métodos dentro de um botão, ou, se deseja que a aplicação inicie as tarefas automaticamente, chame os métodos logo depois da linha initComponents(); da classe que deseja programar as tarefas.
this.Tarefa1(); this.Tarefa2();
Exemplo para download – Timer em Java
Para ver o código em ação, baixe o projeto em; https://aulas-profanderson.azurewebsites.net/lpoo/jTimerExemplo.zip