Wenn Sie pausieren möchten, verwenden Sie java.util.concurrent.TimeUnit
:
TimeUnit.SECONDS.sleep(1);
Eine Sekunde schlafen oder
TimeUnit.MINUTES.sleep(1);
Eine Minute schlafen.
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 ein ScheduledExecutorService
und entweder scheduleAtFixedRate
oder empfehlen scheduleWithFixedDelay
.
So führen Sie die Methode beispielsweise 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");
}
Und in Java 7:
public static void main(String[] args) {
final ScheduledExecutorService executorService = Executors.newSingleThreadScheduledExecutor();
executorService.scheduleAtFixedRate(new Runnable() {
@Override
public void run() {
myTask();
}
}, 0, 1, TimeUnit.SECONDS);
}
private static void myTask() {
System.out.println("Running");
}
Thread.Sleep()
.