Tarea Repetible

8
Tarea Repetible Caso de Estudio

Transcript of Tarea Repetible

Page 1: Tarea Repetible

Tarea Repetible

Caso de Estudio

Page 2: Tarea Repetible

Descripción

Crear un proceso que se ejecute cada determinado tiempo.

El proceso debe ser implementado como un Thread.

Page 3: Tarea Repetible

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.

Page 4: Tarea Repetible

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”); }}

Page 5: Tarea Repetible

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();

Page 6: Tarea Repetible

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) { ; } } }

Page 7: Tarea Repetible

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.

Page 8: Tarea Repetible

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.