Voglio ritardare l'esecuzione di qualcosa, sulla falsariga di impostare un timer per il conto alla rovescia che "farà una cosa" dopo un certo periodo di tempo.Come si pianifica un'attività da eseguire una volta?
voglio il resto del mio programma per continuare a correre mentre aspetto, così ho provato a fare il mio Thread
che conteneva un ritardo di un minuto:
public class Scratch {
private static boolean outOfTime = false;
public static void main(String[] args) {
Thread countdown = new Thread() {
@Override
public void run() {
try {
// wait a while
System.out.println("Starting one-minute countdown now...");
Thread.sleep(60 * 1000);
// do the thing
outOfTime = true;
System.out.println("Out of time!");
} catch (InterruptedException e) {
e.printStackTrace();
}
}
};
countdown.start();
while (!outOfTime) {
try {
Thread.sleep(1000);
System.out.println("do other stuff here");
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
Anche se questo ha funzionato, più-o- meno, sembrava che ci dovrebbe essere un modo migliore per farlo.
Dopo alcune ricerche, ho trovato un mucchio di domande come queste, ma in realtà non affrontare quello che sto cercando di fare:
- How do I schedule a task to run at periodic intervals?
- How i can run my TimerTask everyday 2 PM
- How to run certain task every day at a particular time using ScheduledExecutorService?
- Java execute task with a number of retries and a timeout
non ho bisogno niente di questo complica ted; Voglio solo fare una cosa sola dopo un certo periodo di tempo mentre il resto del programma è ancora in esecuzione.
Come devo fare per la pianificazione di un compito di una volta a "fare una cosa"?
questo esecutore pianificato verrà eseguito una volta o ogni minuto. Voglio che il mio venga eseguito solo una volta e esca. – qualebs
@qualebs In questo esempio l'azione verrà eseguita una sola volta. Il tempo passato nel metodo 'schedule()' è il ritardo prima dell'esecuzione dell'azione. – azurefrog