Wie kann man einen Programmmablauf ohne den Einsatz von Threads zeitlich beeinflussen?

Durch Incrementieren und Abfagen der Unix-Zeit lässt sich dies einfach realisieren

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.