Ich versuche, einen einfachen Timer, der einen Signalton nach der angegebenen Anzahl von Sekunden spielt. Ich habe es geschafft, es zu arbeiten, aber die TimerTask läuft nach dem Piepton weiter. Jetzt höre ich die Ausführung auf? Hier ist mein Code:So stoppen Sie eine laufende TimerTask
import java.util.Scanner;
import java.util.Timer;
import java.util.TimerTask;
import java.awt.Toolkit;
class Alarm {
public static void main(String[] args) {
long delay;
Scanner scan = new Scanner(System.in);
System.out.print("Enter a delay in seconds: ");
delay = scan.nextInt()*1000;
Timer timer = new Timer();
TimerTask task = new TimerTask() {
@Override
public void run() {
Toolkit.getDefaultToolkit().beep();
}
};
timer.schedule(task, delay);
}
}
Es tut mir leid. Das habe ich gleich nach dem Posten herausgefunden. Ich musste den Timer als final deklarieren und timer.cancel() nach dem Piepton innerhalb der run() -Methode aufrufen. Nicht sicher, dass es eine großartige Lösung ist, eine lokale Variablenmethode innerhalb einer inneren Klasse aufzurufen, obwohl ... – Zim