Sto provando a creare un semplice timer che riproduca un segnale acustico dopo il numero di secondi specificato. Sono riuscito a farlo funzionare, ma il TimerTask continua a funzionare dopo il segnale acustico. Ora interrompo l'esecuzione? Ecco il mio codice:Come arrestare un TimerTask in esecuzione
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);
}
}
mi dispiace. L'ho capito molto velocemente subito dopo la pubblicazione. Ho dovuto dichiarare il timer come finale e chiamare timer.cancel() dopo il segnale acustico nel metodo run(). Non sono sicuro che sia un'ottima soluzione per chiamare un metodo di variabili locali all'interno di una classe interna sebbene ... – Zim