I lang tid har samarbejdsbranchen fokuseret på at forbedre enhedsfunktioner – bedre kameraer, klarere lyd og smartere software. Men den virkelige forvandling handler ikke om funktioner.
Dette er den rigtige måde at gøre det på, jf. Sun. Der tages højde for hvor lang tid selve jobbet tager, så det altid bliver udført på præcis samme tidspunkt:
public class MyTimer { // klokkeslettet for hvornår opgaven skal udføres: private static final int hour = 2; private static final int minute = 0; private Timer timer;
public MyTimer(DataAdministrator dataAdm) { // Første tidspunkt for hvor cleanere skal køre findes Calendar c = Calendar.getInstance(); c.setTimeInMillis(System.currentTimeMillis()); // arbejdet bliver udført på klokkeslettet, gældende fra næste døgn c.set(c.get(c.YEAR),c.get(c.MONTH),c.get(c.DATE+1),hour,minute); // Timeren startes som en deamon-thread, så hvis kun den er tilbage lukker serveren timer = new Timer(true); // Timeren startes og kører en gang i døgnet (hvert 86.400.000 ms) // Der tages højde for hvor lang tid operationen tager, så opgaven altid vil blive udført på det samme tidspunkt timer.scheduleAtFixedRate(new Task(), c.getTime(), 24*60*60*1000); }
private class Task extends TimerTask { public void run() { // Det arbejde der skal udføres } } }
1. Den rene java løsning: Du laver en klasse der extender java.util.TimerTask
public class MinTimerTask extends TimerTask{ public void run(){ kaldFunktion(); } }
Du kan nu få kaldt "run()" kl 00:00:00 hvert døgn ved at lave dig en java.util.Timer:
Timer timer = new Timer(); timer.scheduleAtFixedRate(new MinTimerTask(), beregnMillisekunderTilMidnat(), 86400000L);
Hermed er der startet en ny tråd der håndterer dine funktionskald.
2. Den operativsystemstyrede eksekvering: Du lægger simpelthen din funktion ind under en main-funktion. Du lader så operativsystemet invokere et opstartsscript hver midnat. Denne løsning kan være optimal der hvor systemovervågningen integrerer mod dit operativsystem snarere end din applikationslog eller lignede.
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.