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!

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.
Imagen de ezamudio

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.

Imagen de carlos86

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

Imagen de ezamudio

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.

Imagen de carlos86

Gracias

Gracias probare para ver el resultado, luego te comento

Imagen de carlos86

ejemplo

¿Donde puedo encontrar un ejemplo del uso de la clase ScheduledExecutor?

Imagen de joseguru

gracias por la informacion

Gracias por la informacion estoy, creando la tarea de acuerdo a tu respuesta, saludos.

Imagen de ezamudio

Ejemplo real

carlos86 un ejemplo real: