Timer (1): Schlagzeug auf der Konsole
Sie wissen sicher, dass man mit Thread.sleep(int ms) kleine Pausen im Programmablauf erzeugen kann. In Verbindung mit einer Schleife kann man diese Pausen nutzen, um Animationen und rhythmische Ereignisse zu erzeugen. Besser geht das allerdings mit einem Timer aus der java.utilities-Bibliothek. Der ist sogar auf der Konsole einsetzbar.
Probieren Sie das folgende Programm. Beachten Sie:
Um den Timer zu jutzen, muss die Bibliothek java.util.* importiert
werden.
Am Anfang des Programms wird ein Timer-Objekt angelegt. Soll der Timer -
wie hier aus der main-Methode heraus gestartet werden, muss es als
static deklariert sein.
Ein und derselbe Timer kann mehrere Tasks
kontollieren.
Verwenden Sie, um einen Timer für einmalige Tasks einzurichten, die
Methode schedule(...).
Sie wird hier genutzt, um alle Aktivitäten des Timers anzuhalten.
Periodische Timertasks werden mit der Methode
scheduleAtFixedRate(...) in Gang gesetzt.
import java.util.*;
public class TimerInterrupt {
static final Timer timer = new Timer();
static TimerTask task1 = new TimerTask() {
public void run() {
timer.cancel();
}};
static TimerTask task2 = new TimerTask() {
public void run() {
System.out.print("\nbumm ");
}};
static TimerTask task3 = new TimerTask() {
public void run() {
System.out.print("ta ");
}};
public static void main(String[] args) throws Exception {
System.out.println("Timer-Demo");
timer.schedule(task1,5000);
timer.scheduleAtFixedRate(task2, 0, 200);
// Millisekunden
timer.scheduleAtFixedRate(task3, 0, 100);
// Millisekunden
}
}
Aufgaben:
Produzieren Sie einen anderen Rhythmus.
Versuchen Sie sich mit Multitasking: Programmieren Sie eine Schleife, die fortgesetzt Punkte auf dem Bildschirm ausgibt und einen Timer, der von Zeit zu Zeit ein Objekt (z.B. einen Smiley) dazwischensetzt.