lavoro in esecuzione al quarzo
-
18-09-2019 - |
Domanda
ciao c'è qualcosa che ho capito con quarzo quando working.Say un cron è impostato per svegliarsi ogni 2min con il 0 0/2 * * *
espressione? .
Quando si esegue il progetto a dire 13:10:30, la prima azione avviene a 13:12:00 e la seconda 13:14:00 e ogni 2 minuti 0 secondi per il resto. Ovviamente tra l'avvio del progetto e la prima occorrenza dell'azione ci sono stati 1 min:. 30s solo
C'è un modo per la prima occorrenza di rispettare il 2min non importa che a secondo del progetto parte?
Soluzione
lavori Cron sono configurati nel quarzo utilizzando la classe CronTrigger
. L'alternativa è quella di utilizzare SimpleTrigger
, che è possibile costruire con intervalli di ritardo fisso. SimpleTrigger
ha vari costruttori, che consente di specificare l'ora di inizio, ora di fine, il numero di ripetizioni, intervallo di ripetizione, e così via.
Detto questo, mi consiglia di non utilizzare al quarzo per questo tipo di programmazione, e utilizzare java.util.concurrent.Executors.newScheduledThreadPool()
. E 'molto più facile di quarzo quando si tratta di semplici attività ricorrenti.
Altri suggerimenti
quarzo può usare cron per la programmazione, che si basa sulla data e l'ora, e non la durata. Ciò significa che l'espressione cron si definisce è direttamente correlata al tempo corrente sulla macchina, non sul quando l'applicazione è stata avviata.
Non sono a conoscenza di una configurazione al quarzo che vi aiuterà a risolvere il tuo problema. Tuttavia, una soluzione è quella di creare il proprio Thread
, che ha iniziato durante il lancio della vostra applicazione e che attende fondamentalmente 2 minuti prima di chiamare un metodo:
while (running) {
Thread.sleep(1000 * 120);
doStuff();
}