Heim  >  Artikel  >  Java  >  Java Multithreading – die Verwendung von Timer Timer

Java Multithreading – die Verwendung von Timer Timer

高洛峰
高洛峰Original
2016-12-16 13:56:071488Durchsuche

Wir sehen mehr Timing-Funktionen auf Mobiltelefonen, wie z. B. geplante Müllreinigung, Wecker usw. Die Timing-Funktion verwendet hauptsächlich das Timer-Objekt in Java und verwendet intern Multithreading-Technologie.

Die Die Zeitklasse ist hauptsächlich für die Ausführung der Funktion geplanter Aufgaben verantwortlich, d Kapselt den Aufgabeninhalt ist die TimerTask-Klasse. Diese Klasse ist eine abstrakte Klasse und die Vererbung erfordert die Implementierung einer Ausführungsmethode.

Durch Überprüfen der Dokumentation sehen wir, dass Timer die folgenden Konstruktoren hat:

Java Multithreading – die Verwendung von Timer Timer Der Timer hat so viele Methoden:

Java Multithreading – die Verwendung von Timer Timer Im Folgenden verwenden wir den Timer, um eine einfache Funktion auszuführen, nämlich „Sie“ auszudrucken sollte auf der Konsole aufstehen, nachdem das Projekt drei Sekunden lang ausgeführt wurde , aber obwohl die Aufgabe abgeschlossen wurde, wurde der Prozess nicht zerstört und war immer noch rot. Was ist der Grund dafür?

Das Erstellen eines Timers ist gleichbedeutend mit dem Starten eines neuen Threads Daemon-Thread, sodass er immer ausgeführt wird.

package com.wang.reflect;

import java.util.Timer;
import java.util.TimerTask;

class MyTask extends TimerTask{

    @Override
    public void run() {
        System.out.println("您该起床了!!!!");
    }
}
public class TimerDemo {
    public static void main(String[] args) {
        //创建定时器对象
        Timer t=new Timer();
        //在3秒后执行MyTask类中的run方法
        t.schedule(new MyTask(), 3000);
        
    }
}
In der Time-Klasse gibt es eine cancel()-Methode in der TimerTask-Klasse

Die Funktion der TimerTask-Klasse besteht darin, sich selbst aus dem zu löschen Aufgabenwarteschlange (ein Timer-Objekt kann mehrere Timerask-Aufgaben ausführen)

Timer Die Funktion der Klasse besteht darin, alle Aufgaben in der Aufgabenwarteschlange zu löschen

Schreiben Sie unten ein Beispiel, um alle Dateien regelmäßig zu löschen ein Verzeichnis auf dem angegebenen Datenträger:

Beachten Sie, dass die von mir angegebene Datumsart sofort ausgeführt wird

package com.wang.reflect;

import java.io.File;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Timer;
import java.util.TimerTask;


class MyTask extends TimerTask{
/**
 * 定时删除指定位置的文件,(这里以删除f盘下aa文件夹的所有文件为例)
 */
    @Override
    public void run() {
        File file=new File("f://aa");
        deleteFolder(file);
        
    }
    public void deleteFolder(File file){
        File[] files=file.listFiles();
        for(File f:files){
            if(f.isDirectory()){
                //使用递归
                deleteFolder(f);
            }else{
                f.delete();
            }
        }
        file.delete();
    }
    
}
public class TimerDemo {

    public static void main(String[] args) throws ParseException {
        //创建定时器对象
        Timer t=new Timer();
        String time="2016-04-04 11:26:40";
        Date d=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(time);
        t.schedule(new MyTask(), d);
    }
}


Weitere Artikel zum Thema Java-Multithreading – Timer-Nutzung 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