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?

È stato utile?

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();
}
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top