Synchronisieren Sie Java-Threads mit Timer und timerTask
java.util.timer ist eine Klasse, die verwendet werden kann, um (java scheduler) Aufgaben, die einem Thread für die zukünftige Ausführung zugeordnet sind. Aufgaben können einmal oder wiederholt in regelmäßigen Abständen ausgeführt werden.Mehrere Threads können sich eine einzelne Instanz von timer vorausgesetzt, es findet eine Synchronisation von java.
java.util.TimerTask ist eine abstrakte Klasse, die die Ausführbar. Wir müssen von dieser Klasse erben, um unsere TimerTask die mit dem timer. Die timer verwendet die Methoden wait and notify um Prozesse zu planen.
Hier ist ein Beispiel für die Implementierung von timer:
import java.awt.Toolkit;Output
import java.util.Date;
import java.util.Timer;
import java.util.TimerTask;
public class TimerTask{
statisches Toolkit-Toolkit;
public TimerTask(){
toolkit = Toolkit.getDefaultToolkit();
TimerTask timerTask = new executetask();
//Führen Sie die Timertask als deamonTimer-Timer = new Timer(true);
//Planen Sie die Aufgabe für die zukünftige Ausführung in einer vordefinierten Zeit
timer.schedule(timerTask, 0, 1*1000);
System.out.println("TimerTask destarted");
//nach 10s abbrechen
try {
Thread.sleep(10000);
} catch (InterruptedException e) {
e.printStackTrace();
}
timer.cancel();
System.out.println("TimerTask gestoppt");
}
class executetask extends TimerTask {
@Override
public void run() {
System.out.println("Starts: "+new Date());
versuche {
//2 Sekunden, um die Aufgabe abzuschließen
Thread.sleep(2000);
} catch (InterruptedException e) {
e.printStackTrace();
}
toolkit.beep();
System.out.println("Beendet: "+new Date());
}
}
public static void main(String args[]){
new TimerTask();
}
}
Dies ist ein einfaches Beispiel für einen Task-Manager. Der Timer startet a Aufgabe alle 1 Sekunde (1000 Millisekunden) wiederholt und in einem festen Intervall. mit der Methode schedule() das als Argumente verwendet:
- La Aufgabe zu bestellen.
- Die Zeit vor dem Aufgabe hingerichtet werden. in Millisekunden.
- Die Zeit zwischen aufeinanderfolgenden Ausführungen von Aufgaben oder die Ausführungshäufigkeit in Millisekunden.
Die Methode Timer.cancel() bricht den Timer und alle Aufgaben in der Warteschlange. Sobald es erledigt ist, ist es Daemon-Thread wird ebenfalls beendet.
Referenzen:
Oracle: Timer-Klasse
Oracle: timerTask class
java2s:Toolkit beep
javapoint: daemon thread