terça-feira, 26 de agosto de 2008

Aplicações com Agendamento Utilizando Java

Precisando construir um sistema de monitoração fui apresentado a uma nova necessidade: Agendamento de tarefas utilizando o Java. Para implementação de agendamento de tarefas em Java basta o conhecimento de duas classes:

java.util.TimerTask – Classe abstrata que implementa a interface Runnable. Para criar uma Instância dessa classe é necessário sobrescrever o método run().

java.util.Timer – Essa classe permite que uma instância da classe abstrata TimerTask sejam agendadas e executada como uma Thread ou um daemon.

Chega de teoria, vamos à prática:

import java.util.Date;
import java.util.Timer;
import java.util.TimerTask;

class Task extends TimerTask {

int i = 1;

public void run() {
System.out.println(i + " - " + new Date());

if (i++ == 5) {
System.exit(0);

}

}

}

public class Main {

public static void main(String[] args) {
int inicioApos = 20000;
int tempoParaProximaExecucao = 15000;
Timer timer = new Timer();
timer.scheduleAtFixedRate(new Task(), inicioApos, tempoParaProximaExecucao);

}

}

No código anterior, foi implementada uma Task que é iniciada após 20 segundos do inicio do programa e que roda a cada 15 segundos.

Uma opção para obter o mesmo resultado é utilizar:

timer.schedule(new Task(), new Date().getTime() + 20000, 15000);

Mas o método schedule, com a assinatura acima permite que uma tarefa seja executada qualquer data, basta passar uma instância de java.util.Date com o dia e hora desejado.

Somente as classe padrões para agendamento de tarefas em Java foram úteis para as min as minhas necessidades, mas, para agendamentos mais drásticos existe o Quartz Enterprise Job scheduler (http://www.opensymphony.com/quartz/).

0 comentários:

Seguidores

Total de visualizações

Tecnologia do Blogger.
Evandro Santos © 2016 Suporte Blogger Templates