25
2010
Ejecutar tareas programadas en Java.

Programar tareas en Java
En muchas aplicaciones Java, es muy frecuente que tengamos la necesidad de ejecutar tareas periódicamente, muchas pueden ser las razones que nos lleven a ello, llamar periódicamente a un script que actualice una BBDD, comprobar periódicamente ciertos datos de la BBDD y dependiendo de sus valores mostrar una alarma al usuario…
Si nos encontramos ante la necesidad de hacer un desarrollo de este tipo, tenemos múltiples opciones para afrontarlo, la solución casera’ es que la propia API de Java nos proporciona utilidades para hacerlo, la otra solución es, como siempre, recurrir a librerías externas al API de Java, en este artículo vamos a utilizar la librería QUARTZ.
Veamos que nos ofrece la API de Java.
La API de Java nos ofrece las clases:
- java.util.Timer
- java.util.TimerTask
Clase Timer
La clase Timer nos permite ejecutar las tareas de una forma programada, cada Timer en realidad es un Thread de Java que ejecuta todas los TimerTask que tenga asignados secuencialmente.
Sus métodos más importantes son:
Cancel( ): Termina el Timer descartando todas las tareas planificadas.
Schedule( ): Planifica la tarea a ejecutar (Consultar API para ver todas las opciones posibles).
Clase TimerTask
La clase TimerTask representa la tarea que se debe ejecutar periódicamente.
Para utilizarla tenemos que construir una clase que extienda de la clase TimerTask y sobreescribir el método run(), dentro de este método irá le código que queremos que se ejecute cuando se lance la tarea.
Sus métodos más importantes son:
Run( ) : Este método es el que se sobreescribe para que la tarea ejecute nuestro código.
Cancel( ): Desplanifica esta tarea (no se vuelve a ejecutar) pero no para el Timer que la ejecuta.
Codigo Ejemplo | Programar tareas en Java
public class Planificador {
Timer timer;
int counter1 = 0;
int counter2 = 0;
Date fecha;
boolean finTarea = false;
public Planificador ( ) {
//se crea un planificador que planificara 2 tareas
timer = new Timer ( ) ;
//la Tarea1 se ejecuta pasado 1 segundo y luego periódicamente cada segundo
timer.schedule ( new Tarea1 ( ) , 1000, 1000) ;
//la Tarea2 se ejecuta pasado 5 segundos y luego periodicamente cada segundo
timer.schedule ( new Tarea2 ( ) , 5000, 1000) ;
}
//Tarea1: Muestra el valor de un contador y lo incrementa
//cuando el contador llega a 10 se desplanifica la tarea
class Tarea1 extends TimerTask {
public void run ( ) {
System.out.println ( “Ejecucion nº “+ counter1+” de la Tarea1″) ;
if (counter1 < 5){
System.out.println ( “ El contador tiene valor: “+ counter1) ;
counter1++;
}
else{
//Si la otra tarea ya ha acabado mata al planificador
if (finTarea)
{
System.out.println ( “ ***Fin Planificador***”) ;
timer.cancel();
}
//Si la otra tarea todavia no ha acabado solo se desplanifica, el
//planificador sigue funcionando
else
{
System.out.println ( “ ***Fin Tarea1***”) ;
this.cancel ( ) ;
System.out.println ( “Tarea1 desplanificada.” ) ;
finTarea = true;
}
}
}
}
//Tarea2: Muestra la fecha actual
//cuando el contador llega a 10 se desplanifica la tarea
class Tarea2 extends TimerTask {
public void run ( ) {
System.out.println ( “Ejecucion nº “+ counter2+” de la Tarea2″) ;
fecha = new Date();
if (counter2 < 5){
System.out.println ( “ Fecha: “+ fecha) ;
counter2++;
}
else{
//Si la otra tarea ya ha acabado mata al planificador
if (finTarea)
{
System.out.println ( “ ***Fin Planificador***”) ;
timer.cancel();
}
//Si la otra tarea todavia no ha acabado solo se desplanifica, el
//planificador sigue funcionando
else
{
System.out.println ( “ ***Fin Tarea2***”) ;
this.cancel ( ) ;
System.out.println ( “Tarea2 desplanificada.” ) ;
finTarea = true;
}
}
}
}
public static void main ( String args [ ] ) {
System.out.println ( “Iniciamos el Planificador” ) ;
new Planificador ( ) ;
}
}
Artículos relacionados
Related Posts
Leave a comment
Ayudas!
Encuéntralo aquí
Entradas recientes
- Crear un report con Oracle Reports
- Cloud Computing y Administración de servidores
- Tareas programadas en Linux (Cron)
- Editar ficheros de traducciones .po y .mo
- Cambiar la carpeta de un dominio
- Modificar la directiva register_globals
- Solución al error de instalación de Oracle 11g XE
- Crear un listener o escuchador en Android
- Buscar en el código de una página web con java
- Hola Mundo en Android
- Prácticas de PHP – MySql
- Instalar servidor de audio o video Icecast2
- Algoritmos de planificación (FIFO, WFQ, Round Robin, Prioridad)
- Sockets en Java (UDP y TCP) | Ejemplo de compras
- Aplicaciones Multimedia en la red
- Conexiones persistentes y no persistentes
- Comparación de arquitecturas Cliente-Servidor y P2P
- Convertir una dirección de red IP a formato binario
- Enviar email a todos los usuarios
- Dibujar marcadores en un mapa de Google Maps V3
Recientes
- Lord Belial: Me fue muy útil, muchas gracias.
- Sizet Experience: Una herramienta muy útil sobre todo cuando usamos muchos plugins. El tema que mencionas del hosting...
- Anika La Rubia: Estos son básicos y lo más utilizados, pero la lista es realmente extensa como he visto en bloogie.es...
- robert: Hola, sera que podrías poner el código html, Saludos
- luis: como seria el codigo,si cuando yo ingrese las coordenadas me muestre un punto en el mapa
Categorías
- Android (4)
- Bases de datos (71)
- Data Mining (2)
- MySql (3)
- Oracle (60)
- SGBD (4)
- Cajon desastre (4)
- Consolas (5)
- Desarrollo web (60)
- Blogger (1)
- Google Maps (3)
- SEO (10)
- Wordpress (19)
- Ensamblador (13)
- Codigo (7)
- Facebook (API) (12)
- Adsense (1)
- Aplicación Test (1)
- Conectar con Facebook (3)
- Facebook en Español (2)
- Publicar Facebook (4)
- Flash (1)
- Flex (1)
- Forms (2)
- Hardware (18)
- Arquitectura (3)
- Iphone (5)
- Java (24)
- Android (1)
- JavaScript (17)
- Php (13)
- Proyectos Programación (10)
- Redes (22)
- Software (21)
- Ubuntu (6)
- Vb.net (4)
- Windows (1)
- XML (5)