Java: Warten Sie, bis TimerTask abgeschlossen ist, bevor Sie mit der Ausführung fortfahren
Ich habe ein nerviges Problem. Im Moment habe ich einen Codeausschnitt, der einen Thread startet, einen Timer innerhalb dieses Threads festlegt, diesen Thread dann verlässt und mit seiner Lebensdauer fortfährt. Ich wollte, dass das Programm wartet, bis die TimerTask abgeschlossen ist, bevor der Code-Fluss fortgesetzt wird. Wenn Sie jedoch eine neue TimerTask einrichten, wird die Ausführung nicht angehalten, um zu warten, bis der Timer abgelaufen ist.
Wie richte ich das so ein, dass mein Code die TimerTask erreicht, darauf wartet, dass die TimerTask abläuft und dann fortfährt? Sollte ich überhaupt einen Timer benutzen? Ich habe überall nach einer Lösung gesucht, aber ich kann scheinbar keine finden.
timer = new Timer();
Thread t = new Thread(new Runnable(){
boolean isRunning = true;
public void run() {
int delay = 1000;
int period = 1000;
interval = 10;
timerPanel.setText(interval.toString());
//Scheduling the below TimerTask doesn't wait
//for the TimerTask to finish before continuing
timer.scheduleAtFixedRate(new TimerTask() {
public void run() {
timerPanel.setText(setInterval().toString());
}
}, delay, period);
System.out.println("Thread done.");
}
});
t.start();
try {
t.join(); //doesn't work as I wanted
} catch (InterruptedException e) {
e.printStackTrace();
}
endTask();
Danke im Voraus.
EDIT: Sorry für die Verwirrung über die wiederholte Aufgabe. Ich muss die Aufgabe wiederholen, da es sich um einen Countdown-Timer handelt, der jede Sekunde von 10 bis 0 pulsiert. Die Funktion setInterval () bricht den Timer schließlich ab. Hier ist der relevante Code:
private final Integer setInterval() {
if (interval == 1)
timer.cancel();
return --interval;
}