Verwendung java.util.concurrent.TimeUnit
:
TimeUnit.SECONDS.sleep(1);
Schlaf für eine Sekunde oder
TimeUnit.MINUTES.sleep(1);
Schlaf eine Minute.
Da dies eine Schleife ist, stellt dies ein inhärentes Problem dar - Drift. Jedes Mal, wenn Sie Code ausführen und dann schlafen, werden Sie beispielsweise jede Sekunde ein wenig vom Laufen abweichen. Wenn dies ein Problem ist, verwenden Sie es nicht sleep
.
Darüber hinaus sleep
ist nicht sehr flexibel, wenn es um Kontrolle geht.
Um eine Aufgabe jede Sekunde oder mit einer Verzögerung von einer Sekunde auszuführen, würde ich dringend eine [ ScheduledExecutorService
] [1] und entweder [ scheduleAtFixedRate
] [2] oder [ scheduleWithFixedDelay
] [3] empfehlen .
So führen Sie die Methode myTask
jede Sekunde aus (Java 8):
public static void main(String[] args) {
final ScheduledExecutorService executorService = Executors.newSingleThreadScheduledExecutor();
executorService.scheduleAtFixedRate(App::myTask, 0, 1, TimeUnit.SECONDS);
}
private static void myTask() {
System.out.println("Running");
}