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

Zeitplan-Aufgaben-Timer Java

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-Klasse
Oracle:  timerTask class
java2s:Toolkit beep
javapoint: daemon thread