Tarea Repetible
-
Upload
juliocombativo -
Category
Technology
-
view
1.885 -
download
0
Transcript of Tarea Repetible
![Page 1: Tarea Repetible](https://reader036.fdocuments.ec/reader036/viewer/2022082607/55ae5aea1a28abef7d8b45c0/html5/thumbnails/1.jpg)
Tarea Repetible
Caso de Estudio
![Page 2: Tarea Repetible](https://reader036.fdocuments.ec/reader036/viewer/2022082607/55ae5aea1a28abef7d8b45c0/html5/thumbnails/2.jpg)
Descripción
Crear un proceso que se ejecute cada determinado tiempo.
El proceso debe ser implementado como un Thread.
![Page 3: Tarea Repetible](https://reader036.fdocuments.ec/reader036/viewer/2022082607/55ae5aea1a28abef7d8b45c0/html5/thumbnails/3.jpg)
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](https://reader036.fdocuments.ec/reader036/viewer/2022082607/55ae5aea1a28abef7d8b45c0/html5/thumbnails/4.jpg)
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](https://reader036.fdocuments.ec/reader036/viewer/2022082607/55ae5aea1a28abef7d8b45c0/html5/thumbnails/5.jpg)
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](https://reader036.fdocuments.ec/reader036/viewer/2022082607/55ae5aea1a28abef7d8b45c0/html5/thumbnails/6.jpg)
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](https://reader036.fdocuments.ec/reader036/viewer/2022082607/55ae5aea1a28abef7d8b45c0/html5/thumbnails/7.jpg)
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](https://reader036.fdocuments.ec/reader036/viewer/2022082607/55ae5aea1a28abef7d8b45c0/html5/thumbnails/8.jpg)
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.