Maison >Java >javaDidacticiel >Explication détaillée du minuteur Java (Timer, TimerTask) et exemple de code
Java Timer
Les deux classes utilisées pour implémenter la fonction timer en JAVA sont Timer et TimerTask
La classe Timer est une classe utilisée pour effectuer des tâches. Elle accepte une TimerTask. prend des paramètres
Timer a deux modes d'exécution des tâches. Le plus couramment utilisé est le planning, qui peut exécuter les tâches de deux manières : 1 : à une certaine heure (Données), 2 : à Après une heure fixe. time (int delay). Les deux méthodes peuvent spécifier la fréquence d'exécution de la tâche. Il y a deux exemples dans cet article, l'un est simple et l'autre utilise la classe interne
1.
Écrivez d'abord un courspublic class TimeTest { public static void main(String[] args) { Timer timer = new Timer(); timer.schedule(new MyTask(),1000,2000); }puis écrivez un cours
public class MyTask extends TimerTask{ @Override public void run() { System.out.println("开始运行"); } }De cette façon, vous pouvez compléter un minuteur simple, mais il existe un autre moyen Écrivez simplement ces deux classes dans une classe, qui est la classe interne 2. Classe interne
public class SerchRun { protected static void startRun(){ Timer timer = new Timer(); TimerTask task =new TimerTask(){ public void run(){ System.out.println("开始运行"); //在这写你要调用的方法 } }; timer.scheduleAtFixedRate(task, new Date(),2000);//当前时间开始起动 每次间隔2秒再启动 // timer.scheduleAtFixedRate(task, 1000,2000); // 1秒后启动 每次间隔2秒再启动 } public static void main(String[] args) { SerchRun.startRun(); } }La différence entre planning et planningAtFixedRate est que si vous spécifiez l'heure de début de l'exécution Avant l'heure d'exécution actuelle du système, planningAtFixedRate exécutera le temps écoulé sous forme de période, mais planning ne comptera pas le temps écoulé. Par exemple :
SimpleDateFormat fTime = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss"); Date d1 = fTime.parse("2005/12/30 14:10:00"); t.scheduleAtFixedRate(new TimerTask(){ public void run() { System.out.println("this is task you do6"); } },d1,3*60*1000);L'intervalle est de 3 minutes et l'heure de début spécifiée est le 30/12/2005 à 14:10:00 si j'exécute ce programme à 14h17. :00 , puis
this is task you do6 //14:10 this is task you do6 //14:13 this is task you do6 //14:16sera imprimé 3 fois immédiatement et notez que la prochaine exécution est à 14h19 au lieu de 14h20. C'est-à-dire que le timing commence à partir de l'heure de début spécifiée, et non à partir de l'heure d'exécution. Mais si la méthode de planification est utilisée ci-dessus, l'intervalle est de 3 minutes et l'heure de début spécifiée est le 30/12/2005 à 14:10:00, alors si le programme est exécuté à 14:17:00 , le programme sera exécuté immédiatement une fois. Et la prochaine heure d'exécution est 14h20, pas la période commençant à 14h10 (14h19). Merci d'avoir lu, j'espère que cela pourra vous aider, merci pour votre soutien à ce site ! Pour plus d'explications détaillées sur le minuteur Java (Timer, TimerTask) et des exemples d'articles sur le code, veuillez faire attention au site Web PHP chinois !