2010-10-18 15 views
0

Dans mon application, je veux charger des données à la base de données à minuit chaque jour, comment le configurer en utilisant le minuteur?Comment définir une tâche de temporisation à l'aide de Timer?

J'ai pensé à l'aide:

Timer t=new Timer(); 
TimerTask tt=new TimerTask(){ 
    public void run(
    //read the data, and push to db 
); 
}; 
t.schedule(tt,(the next midnight-now time)); 

Cependant, je crains que cela ne peut être exécutée qu'une seule fois. Un correctif?

+0

Vous devez marquer votre question avec ce langage de programmation que vous utilisez, à tout le moins. –

+0

bien, je l'ajoute maintenant. – hguser

Répondre

2

Vous pouvez utiliser public void scheduleAtFixedRate(TimerTask task, Date firstTime, long period)

Horaires la tâche spécifiée pour l'exécution répétée à taux fixe, en commençant à l'heure indiquée. Les exécutions subséquentes ont lieu à intervalles réguliers, séparés par la période spécifiée.

http://download.oracle.com/javase/1.4.2/docs/api/java/util/Timer.html

+0

Mon application ne démarre peut-être pas à minuit. – hguser

+0

Je n'ai pas compris cela, que voulez-vous dire? Avec la méthode que j'ai posté, vous devriez être en mesure de planifier le travail pour chaque fois que vous le souhaitez. –

0

Vous pouvez vérifier QuartzScheduler out. C'est très utile dans les processus de synchronisation complexes. C'est aussi très facile à utiliser.

Étant donné que votre tâche est très simple, vous pouvez ne pas vouloir utiliser une bibliothèque supplémentaire, mais gardez cela à l'esprit.

http://www.quartz-scheduler.org/