Countdown in Java?
Ich möchte etwas programmieren, wo ich einen Countdown habe. Dabei soll eine bestimmte Zahl auftauchen und nach random Sekunden zwischen 1 und 3 verschwinden. Wie kann ich das machen? Ich würde dabei gerne
System.currentTimeMillis()
verwenden, nur weiß ich gerade nicht wie.
2 Antworten
Die Zufallsverzögerung kannst du so berechnen:
int randomDelay = ThreadLocalRandom.current().nextInt(1, 4);
Die zeitliche Steuerung solltest du mit einem Timer durchführen. Da ich annehme, dass du die Zahl auf einer grafischen Oberfläche einblenden möchtest, wäre zu empfehlen, einen für das jeweilige GUI-Toolkit spezifischen Timer zu verwenden.
- In Swing gibt es die javax.swing.Timer-Klasse.
- In JavaFX kann die Timeline-Klasse genutzt werden.
Bei einer draw loop kannst du die Zeit ungefähr stoppen (beachte, dass jede Iteration einer draw loop nicht immer gleichlang sein muss).
Beispiel:
long start = System.currentTimeMillis();
long delay = randomDelay * 1000;
while (true) {
long timeDifference = System.currentTimeMillis() - start;
if (timeDifference >= delay) {
// do something ...
}
}
new java.util.Timer().schedule(
new java.util.TimerTask() {
@Override
public void run() {
// dein code hier
}
},
new Random().nextInt(3)*1000
);
Führt den Code nach 1-3 Sekunden aus. Millisekunden verwenden passt nicht so :/
TimerTask ist ein Thread oder?