Necesito programar una tarea para que se ejecute en un intervalo de tiempo fijo. ¿Cómo puedo hacer esto con soporte de intervalos largos (por ejemplo, cada 8 horas)?
Actualmente estoy usando java.util.Timer.scheduleAtFixedRate
. ¿ java.util.Timer.scheduleAtFixedRate
Soporta largos intervalos de tiempo?
TimeUnit
aplica tanto a lainitialDelay
como a laperiod
. La ejecución cada 24 horas terminará siendo interrumpida cuando se active el horario de verano, pero unaTimeUnit
deDAYS
no le permite especificar un grano finoinitialDelay
. (Creo que la implementación interna ScheduledExecutorService se convierteDAYS
a nanosegundos de todos modos).Debería echar un vistazo a Quartz , es un framework java que funciona con las ediciones EE y SE y permite definir trabajos para ejecutar un tiempo específico
fuente
Intenta de esta manera ->
En primer lugar, cree una clase TimeTask que ejecute su tarea, se ve así:
luego, en la clase principal, crea una instancia de la tarea y la ejecuta periódicamente iniciada en una fecha específica:
fuente
Use Google Guava
AbstractScheduledService
como se indica a continuación:}
Si tiene más servicios como este, entonces registrar todos los servicios en ServiceManager será bueno ya que todos los servicios se pueden iniciar y detener juntos. Lea aquí para más información sobre ServiceManager.
fuente
Si desea seguir
java.util.Timer
, puede usarlo para programar a intervalos de tiempo grandes. Simplemente pasa en el período que está disparando. Consulte la documentación aquí .fuente
Estas dos clases pueden trabajar juntas para programar una tarea periódica:
Tarea programada
Ejecutar tarea programada
Referencia https://www.mkyong.com/java/how-to-run-a-task-periodically-in-java/
fuente
Si su aplicación ya está utilizando Spring Framework, tiene la programación integrada
fuente
Haz algo cada segundo
fuente
Yo uso la función de Spring Framework. ( dependencia de jar de contexto de primavera o maven).
ScheduledTask es mi propia interfaz con mi método personalizado ejecutar , que llamo como mi tarea programada.
fuente
¿Has probado Spring Scheduler con anotaciones?
puedes hacer esto con xml también.
fuente
mi servlet contiene esto como un código de cómo mantener esto en el planificador si un usuario presiona aceptar
fuente