Heim  >  Artikel  >  Java  >  Detaillierte Erklärung und Beispielcode für den Java-Timer (Timer, TimerTask).

Detaillierte Erklärung und Beispielcode für den Java-Timer (Timer, TimerTask).

高洛峰
高洛峰Original
2017-01-11 16:14:431513Durchsuche

Java-Timer

Die beiden Klassen, die zur Implementierung der Timer-Funktion in JAVA verwendet werden, sind Timer und TimerTask

Die Timer-Klasse ist eine Klasse, die zum Ausführen von Aufgaben verwendet wird. Sie akzeptiert eine TimerTask Nimmt Parameter an

Timer verfügt über zwei Modi zum Ausführen von Aufgaben. Der am häufigsten verwendete Modus ist der Zeitplan, der Aufgaben auf zwei Arten ausführen kann: 1: zu einem bestimmten Zeitpunkt (Daten), 2: zu einem bestimmten Zeitpunkt Zeit (int Verzögerung). In diesem Artikel gibt es zwei Beispiele, eines ist einfach und das andere verwendet die interne Klasse

1

Schreiben Sie zuerst eine Klasse

public class TimeTest {
public static void main(String[] args) {
   
   Timer timer = new Timer();
   timer.schedule(new MyTask(),1000,2000);
}
und dann eine Klasse

public class MyTask extends TimerTask{
 
  @Override
  public void run() {
 System.out.println("开始运行");    
  }
}
Auf diese Weise können Sie einen einfachen Timer vervollständigen, aber es gibt auch eine andere Möglichkeit. Schreiben Sie einfach diese beiden Klassen hinein eine Klasse, die die interne Klasse ist

2. Interne Klasse

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();
  }
}
Der Unterschied zwischen Schedule und ScheduleAtFixedRate besteht darin, dass, wenn Sie den Zeitpunkt für den Start der Ausführung angeben Vor der aktuellen Systemlaufzeit, ScheduleAtFixedRate führt die verstrichene Zeit als Zeitraum aus, der Zeitplan zählt die verstrichene Zeit jedoch nicht.

Zum Beispiel:

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);
Das Intervall beträgt 3 Minuten und die angegebene Startzeit ist 30.12.2005 14:10:00, wenn ich dieses Programm um 14:17 ausführe :00 , dann wird

this is task you do6   //14:10
this is task you do6   //14:13
this is task you do6   //14:16
sofort dreimal gedruckt und es wird darauf hingewiesen, dass die nächste Ausführung um 14:19 statt um 14:20 erfolgt. Das heißt, die Zeitmessung beginnt mit der angegebenen Startzeit und nicht mit der Ausführungszeit.

Aber wenn die oben beschriebene Zeitplanmethode verwendet wird, beträgt das Intervall 3 Minuten und die angegebene Startzeit ist 30.12.2005 14:10:00, wenn das Programm um 14:17:00 ausgeführt wird , wird das Programm sofort einmal ausgeführt. Und die nächste Ausführungszeit ist 14:20, nicht der Zeitraum ab 14:10 (14:19).

Vielen Dank fürs Lesen, ich hoffe, es kann Ihnen helfen, vielen Dank für Ihre Unterstützung dieser Website!

Weitere ausführliche Erklärungen zum Java-Timer (Timer, TimerTask) und Artikel zum Beispielcode finden Sie auf der chinesischen PHP-Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn