Preciso agendar uma tarefa para executar em um intervalo fixo de tempo. Como posso fazer isso com o suporte de longos intervalos (por exemplo, a cada 8 horas)?
Atualmente estou usando java.util.Timer.scheduleAtFixedRate
. Faz java.util.Timer.scheduleAtFixedRate
longos intervalos de tempo de suporte?
java
scheduled-tasks
RYN
fonte
fonte
TimeUnit
se aplica aoinitialDelay
e aoperiod
. A execução a cada 24 horas acabará sendo iniciada quando o horário de verão for iniciado, mas umTimeUnit
dosDAYS
itens não permite especificar detalhesinitialDelay
. (Eu acho que a implementação interna ScheduledExecutorService converteDAYS
em nanossegundos de qualquer maneira).Você deve dar uma olhada no Quartz , um framework java que funciona com as edições EE e SE e permite definir tarefas para executar um horário específico
fonte
Tente desta forma ->
Em primeiro lugar, crie uma classe TimeTask que execute sua tarefa:
em seguida, na classe principal, você instancia a tarefa e a executa periodicamente, em uma data especificada:
fonte
Use o Google Guava,
AbstractScheduledService
conforme indicado abaixo:}
Se você tiver mais serviços como esse, o registro de todos os serviços no ServiceManager será bom, pois todos os serviços podem ser iniciados e parados juntos. Leia aqui para obter mais informações sobre o ServiceManager.
fonte
Se você quiser continuar
java.util.Timer
, pode usá-lo para agendar em grandes intervalos de tempo. Você simplesmente passa no período em que está filmando. Verifique a documentação aqui .fonte
Essas duas classes podem trabalhar juntas para agendar uma tarefa periódica:
Tarefa agendada
Executar tarefa agendada
Referência https://www.mkyong.com/java/how-to-run-a-task-periodically-in-java/
fonte
Se seu aplicativo já estiver usando a estrutura Spring, você terá o Agendamento incorporado
fonte
Faça algo a cada segundo
fonte
Eu uso o recurso do Spring Framework. ( jarro de contexto de primavera ou dependência do maven).
ScheduledTask é minha própria interface com o método personalizado de execução , que chamo de tarefa agendada.
fonte
Você já experimentou o Spring Scheduler usando anotações?
você pode fazer isso com xml também.
fonte
meu servlet contém isso como um código como manter isso no planejador se um usuário pressionar aceitar
fonte