miércoles, 11 de noviembre de 2009

Crear una tarea a una hora determinada

Para ello vamos a utilizar la clase java.util.TimerTasK y Timer.

La clase TimerTask tiene un metodo run que es como los Thread, lo que contiene el metodo run es lo que se va a ejecutar cada cierto periodo.

La clase Timer la utilizamos para para programar tareas para ejecutar en el futuro en un hilo de fondo. Las tareas se pueden programar para un tiempo de ejecución, o para la ejecución repetida a intervalos regulares.

En mi proyecto lo he colocado en la clase que arranca el proyecto, dentro de esa clase me he creado un clase interna:

class ImportarDatos extends TimerTask {
public void run() {
//// Damos baja prioridad al hilo
Thread.currentThread().setPriority(Thread.MIN_PRIORITY);

*********************tareas a realizar*****************************

}

Y dentro de la clase del listener me he creado lo siguiente:

System.out.println("*************************************");
System.out.println("* Iniciando recarga Datos...*");
System.out.println("*************************************");
try{
Timer timer= new Timer();
Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.HOUR, 2);
calendar.set(Calendar.MINUTE, 0);
calendar.set(Calendar.AM_PM, 0);
Date date = calendar.getTime();
timer.schedule(new ImportarDatos(), date, 24 * 60 * 60 * 1000);
}catch (Exception e) {
log.debug("Error no controlado");
}
System.out.println("");

Cada vez que arranque la aplicacion se ejecutara esta tarea y tambien a la hora que le hmos puesto, hay que saber que la hora es una menos si yo he puesto a las 2 de la madrugada se ejecutara a la 1.