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;
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 deamon Timer-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();
}
}
Output
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 Ergebnisse der Kompilierung dieses Programms zeigen, dass der Timer auf das Ende des laufenden Prozesses wartet, damit er zum nächsten in der Warteschlange übergehen kann.
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-KlasseOracle: timerTask classjava2s:Toolkit beepjavapoint: daemon thread