Domanda

Sto cercando un modo efficace per eseguire un metodo ogni giorno alle 15:00 indipendentemente da quando l'applicazione è stata inizialmente eseguita o da quanto tempo è in esecuzione.

Questo deve essere fatto interamente dall'applicazione senza intervento del sistema operativo (es. Utilità di pianificazione di Windows)

Ho sperimentato java.util.Timer in varie configurazioni ma non ho avuto successo.

Qualsiasi aiuto sarebbe apprezzato.

Grazie.

È stato utile?

Soluzione

Dovresti dare un'occhiata a Quartz che è un sistema di pianificazione dei lavori basato su Java.

Altri suggerimenti

Probabilmente vorrai usare qualcosa come il motore al quarzo può fare cose come eseguire compiti che mancava (come durante un crash ahem ) e richiede di provare a gestire i thread.

Ad esempio, se usi i thread e lo metti in modalità sleep e lo riattivi dopo 86400 secondi (un giorno), ti sveglierai con un'ora di ritardo (giorno = 82800 secondi) o presto (giorno = 90000 secondi) al cambio dell'ora legale giorno, quindi fai attenzione con qualsiasi soluzione tu scelga

Un modo JDK integrato è quello di fare ciò che gli altri hanno suggerito e calcolare prima:

  • currentTime - desiderataTime

Quindi puoi usare qualcosa come a pianificare l'esecuzione per inviare le attività ed eseguirle con un ritardo particolare. Questo è molto più semplice delle opzioni che hai con framework come Quartz , ma non richiede un esterno dipendenza.

Inoltre, dovresti sempre elencare quale JDK stai usando, così le persone possono fornire soluzioni per la tua versione di JDK.

Puoi iniziare un thread che calcola la differenza alle 3:00 successive e dorme per quel tempo. Quando si sveglia esegue il metodo, ricalcola e dorme. È questo che intendevi?

Come affermato da altri, Quartz è una scelta, con cui è possibile eseguire operazioni, processi o trigger simili a cron, ecco un link su questo argomento: http://www.ibm.com/developerworks/java/library/j-quartz/index.html

Jcrontab

  

Jcrontab è uno scheduler scritto in Java. L'obiettivo del progetto è fornire programmi completamente funzionali per i progetti Java.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top