Wie kann man einen Programmmablauf ohne den Einsatz von Threads zeitlich beeinflussen?
Im Beispiel-Quelltext läuft innerhalb der main-Methode eine einfache Schleife, die die Zählvariable auf die Konsole ausgibt. Nach jedem Durchlauf wird die Methode delay() aufgerufen. In ihr wird die Unix-Zeit1 abgefragt und die als Parameter übergeben Anzahl an Millisekunden hinzugezählt. Dieser Wert ergibt den Zeitpunkt des Abbruchs für eine while-Schleife, deren Zählarbeit mit der aktuellen Unix-Zeit beginnt. Die Methode wird also erst verlassen, wenn die übergebene Zeiteinheit verstrichen ist.
import java.util.Date;
public class ZeitsteuerungOhneThreads {
public static void main(String[] args) {
for (int i = 0; i < 100; i++) {
System.out.println(i);
delay(100);
}
}
private static void delay(int t){
long ende = (new Date()).getTime() + t;
while( (new Date()).getTime() < ende ){
// abwarten und Tee trinken
}
}
}
1) Die Unixtime gibt die Anzahl an Millisekunden vom 1.1.1970 00:00 Uhr bis zum aktuellen Zeitpunkt an.