Maison > Java > javaDidacticiel > le corps du texte

Explication détaillée du minuteur Java (Timer, TimerTask) et exemple de code

高洛峰
Libérer: 2017-01-11 16:14:43
original
1500 Les gens l'ont consulté

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 cours

public class TimeTest {
public static void main(String[] args) {
   
   Timer timer = new Timer();
   timer.schedule(new MyTask(),1000,2000);
}
Copier après la connexion
puis écrivez un cours

public class MyTask extends TimerTask{
 
  @Override
  public void run() {
 System.out.println("开始运行");    
  }
}
Copier après la connexion
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();
  }
}
Copier après la connexion
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);
Copier après la connexion
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:16
Copier après la connexion
sera 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 !

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal