Tarea Repetible

Post on 21-Jul-2015

1.885 views 0 download

Transcript of Tarea Repetible

Tarea Repetible

Caso de Estudio

Descripción

Crear un proceso que se ejecute cada determinado tiempo.

El proceso debe ser implementado como un Thread.

Definición de Clase de Tarea

La clase se llamará ProcesoRepetible Como queremos que sea un hilo en

memoria haremos que implemente Runnable.

Pondremos el método de operación execute() que hará nuestra operación real.

public class ProcesoRepetible implements Runnable { public void run() { //De momento no hace nada }

public void execute() { //Aquí dentro definiriamos nuestra operación System.out.println(“Mensaje a consola”); }}

Implementación de run

Primero, vamos a configurar nuestra clase para que se ejecute cada determinados minutos, dentro del constructor.

Guardaremos los momentos para permitir medir los tiempos.

Revisaremos cada cierto tiempo si el tiempo se ha cumplido.

Cuando se cumpla llamaremos a execute();

private int minutos; //Ultimo momento de ejecución Date ultima = new Date();

public ProcesoRepetible(int minutos) { this.minutos = minutos; }

public void run() { while(true) { try { Date ahora = new Date(); long dif = ahora.getTime() – ultima.getTime(); if(dif >= (minutos * 60000)) { execute(); ultima = ahora; } Thread.sleep(minutos * 60000); } catch(Exception e) { ; } } }

Notas

ultima se refiere al ultimo momento en que se ejecuto el método execute()

El espacio catch solamente ignora el error.

Quedaría crear un hilo y arrancarlo dentro de la aplicación.

Opcionalmente podemos marcarlo como Daemon.

ProcesoRepetible pr = new ProcesoRepetible(5);new Thread(pr).start();

ProcesoRepetible pr2 = new ProcesoRepetible(10);Thread hilo = new Thread(pr2);hilo.setDaemon(true);hilo.start();

Final

Podemos implementar cualquier proceso dentro de execute.