Timer (Poleo)

Iniciado por Lind L. Tailor, 30 Abril 2015, 00:49 AM

0 Miembros y 1 Visitante están viendo este tema.

Lind L. Tailor

Hola...

Nuevamente yo compañeros, pero es que la verdad ya intente lo mas que pude y no consigo resultado positivo alguno, además que la documentación que encuentro sigue sin serme muy clara todavía para mis necesidades, espero explicarme lo mas posible...

Verán, tengo una aplicación de java lista para ejecutarse desde línea de comando, dicha aplicación tiene como objetivo consultar a base de datos, crear directorios por cada registro de la base así como crear archivos de texto plano dentro de los directorios previamente creados, sin embargo, dicha aplicación no la ejecuto directamente desde consola sino mas bien es ejecutada mediante otra aplicación java a través de un timer, el objetivo del timer es ejecutarse cada 10 minutos y cuando termine de ejecutarse el .jar que es llamado pasa a un estado de pausa para posteriormente cuando sean los 10 minutos, ejecutarse nuevamente. No obstante, mi problema no radica en lograr hacer este proceso, mas bien se enfoca que cuando ejecuto mi .jar para llamar al siguiente veo que la creación de las carpetas es sumamente lenta comparada a como debería crearlas, además de que el contenido por cada carpeta de acuerdo a la ejecución individual del archivo (Ejecute el archivo que contiene toda el código "rudo" directamente) deben ser un total de 8 archivos y veo que me crea el doble de archivos

A continuación, proporciono mi código correspondiente al poleo...

Código (java) [Seleccionar]
package com.comerciales.canada.main;

import java.util.Timer;
import java.util.TimerTask;

public class PoleoCarpeta {
Timer timer;

    public PoleoCarpeta() {
        timer = new Timer();
        timer.schedule(new PoleoCarpetaTask(),0,60000);
}

    public void timerSleep(){
    System.out.println("Poleo PAUSADO");
    try {
Thread.sleep(60000);
timer.cancel();
timer.purge();
new PoleoCarpeta();
} catch (InterruptedException e) {
e.printStackTrace();
}
    }
   
    class PoleoCarpetaTask extends TimerTask {
    public void run() {
    System.out.println("Poleo REANUDADO");
    try {
Runtime.getRuntime().exec("java -jar C:\\Legada\\ProyectoComercialesCarga.jar");
timerSleep();
} catch (Exception e) {
e.printStackTrace();
}
    }
    }

    public static void main(String args[]) {
    System.out.println("Poleo COMENZADO");
    new PoleoCarpeta();
    }
}


No estoy seguro si este fallo en especial (Creación de carpetas lento y duplicación de archivos) corresponde al timer o bien a la programación que se encuentra en el otro archivo.

Sin mas que comentar, agradezco su tiempo y pronta respuesta. Que tengan un excelente día...

P.D.1. Si es necesario el otro archivo con gusto comparto el código.
P.D.2. Con respecto al detalle del println(), eh conseguido la solución gracias a un compañero, en un momento subo la solución en el tema correspondiente.

Lind L. Tailor

Hola...

Gracias por su tiempo dedicado a la lectura del tema... Supongo que tengo que empaparme bien de la documentación para la creación de tareas programadas, aunque siempre me ha confundido la creación de Threads, Timer, TimerTask, etc, sin embargo, a pesar de conseguir una respuesta totalmente factible, decidí implementar la librería Quartz,  la cual sigo estudiando ya que sigo sin comprender bien el proceso que con lleva la ejecución de tareas programadas.

Marco el tema como solucionado.