Pergunta

Eu estou procurando uma maneira eficaz para executar um método todos os dias às 15:00, independentemente de quando o aplicativo foi executado inicialmente ou quanto tempo ele tem sido em execução.

Isso deve ser feito inteiramente a partir da aplicação sem intervenção OS (ex. De tarefas do Windows Scheduler)

Tenho feito experiências com java.util.Timer em configurações varia, mas não tive sucesso.

Qualquer ajuda seria apreciada.

Graças.

Foi útil?

Solução

Você deve dar uma olhada Quartz que é um sistema de agendamento de trabalho baseado em Java.

Outras dicas

Você provavelmente vai querer usar algo como o motor de quartzo ele pode fazer coisas como executar tarefas que perdeu (como durante um ahem falhar) e leva o trabalho de tentar gerir threads.

Por exemplo, se você usar tópicos e colocá-lo para dormir e acordá-lo 86400 segundos (um dia) mais tarde você vai acordar e hora de atraso (dia = 82800 segundos) ou no início (dia = 90000 segundos) sobre a mudança DST mais dia, por isso tome cuidado com qualquer solução que você escolher

A built-in JDK maneira é fazer o que os outros sugerido e primeiro calcular:

  • currentTime - desiredTime

Em seguida, você pode usar algo como um cronograma executor para enviar as tarefas e executá-los com um atraso particular. Isto é muito mais simples do que as opções que você tem com frameworks como Quartz , mas não exige um link externo dependência.

Além disso, você deve sempre lista que JDK que você está usando, para que as pessoas podem fornecer soluções para a sua versão do JDK.

Você pode iniciar uma discussão que calcula a diferença para a próxima 15:00 e dorme durante esse tempo. Quando se acorda ele executa o método e recalcula e dorme. É isso que você queria dizer?

Como afirmado por outros Quartz é uma escolha, com ele você pode fazer cron-como operações, empregos ou gatilhos, aqui está um link sobre este assunto: http://www.ibm.com/developerworks/java/library/j-quartz/index.html

Jcrontab

Jcrontab é um programador escrito em Java. O objetivo do projeto é fornecer um programações totalmente funcionais para projetos Java.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top