Я пытаюсь сделать простой таймер, который воспроизводит звуковой сигнал после указанного количества секунд. Мне удалось заставить его работать, но TimerTask продолжает работать после звукового сигнала. Теперь я прекращаю выполнение? Вот мой код:Как остановить работу 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);
}
}
Я сожалею. Я понял это очень быстро сразу после публикации. Я должен был объявить таймер как final и вызвать timer.cancel() после звукового сигнала внутри метода run(). Не уверен, что это отличное решение для вызова метода локальных переменных из внутреннего класса, хотя ... – Zim