Tareas Programadas
Buenas tardes mi tema en esto! es si tendrían un ejemplo de como realizar una tarea programada invocando un Stored Procedure
y que se ejecute cierto tiempo eso ya decisión de la tarea programada que se le esta agregando.
Saludos!
- Inicie sesión o regístrese para enviar comentarios
opciones
Pues tienes varias opciones. Una es usar un simple `ScheduledExecutor` que viene incluido en el JDK. O si necesitas algo más flexible, échale un ojo a Quartz, una biblioteca para calendarizar tareas similar a como se hace con el crontab de *NIX.
En cualquier caso, encapsula tu tarea en un Runnable que tenga acceso a un DataSource para obtener una conexión cuando se ejecute para invocar el SP. Eso te permite tener bajo acoplamiento, ya que dicho Runnable se puede echar a andar tanto con el ScheduledExecutor como con Quartz o cualquier otra biblioteca que decidas utilizar para ejecución de tareas periódicas.
Error con tarea programada
Hola estoy haciendo un programa que cada cierto tiempo me revise si se ha conectado un dispositivo extraible (memoria flash) y que cuando detecte alguno lo revise en busca de archivos copiado en esa fecha, en fin ya logre que lo haga pero cuando tengo muchos archivos en la memoria la tarea programada da error ya que la tengo corriendo cada 5 segundos y el escaneo en busca de archivos dura mas que ese tiempo, como puedo hacer para que inicie nuevamente la búsqueda luego de terminar el escaneo o de lo contrario que cada ves que encuentre una memoria se ejecute un hilo donde me escane esa memoria hasta que sea desconectada. El propósito de mi programa es conocer la cantidad de información en Mb que sale cada día de mi computadora a través de memorias extraibles
ScheduledExecutor
Utiliza el método `scheduleWithFixedDelay` de la clase `ScheduledExecutor`. Puedes crear un ScheduledExecutor con el método `Executors.newSingleThreadScheduledExecutor`. Solamente cuida que el Runnable que pases cache todas sus excepciones, de lo contrario si ocurre una excepción la tarea simplemente deja de correr periódicamente.
Es importante que uses `scheduleWithFixedDelay` y no `scheduledAtFixedRate` porque el primero deja pasar el tiempo que indiques entre ejecuciones, mientras que el segundo trata de ejecutarlas cada X tiempo, sin importar cuánto se tarde: Si programas tu tarea con 5 segundos usando el primer método, cuando corra la tarea si se tarda 3 segundos, al terminar pasarán 5 segundos antes que se ejecute, mientras que con el otro método si la tarea corre y se tarda 3 segundos, va a correr nuevamente 2 segundos después.
Gracias
Gracias probare para ver el resultado, luego te comento
ejemplo
¿Donde puedo encontrar un ejemplo del uso de la clase ScheduledExecutor?
gracias por la informacion
Gracias por la informacion estoy, creando la tarea de acuerdo a tu respuesta, saludos.
Ejemplo real
carlos86 un ejemplo real: