Si vous voulez faire une pause, utilisez java.util.concurrent.TimeUnit
:
TimeUnit.SECONDS.sleep(1);
Dormir une seconde ou
TimeUnit.MINUTES.sleep(1);
Dormir une minute.
Comme il s'agit d'une boucle, cela présente un problème inhérent - la dérive. Chaque fois que vous exécutez du code et que vous dormez, vous vous éloignerez un peu de l'exécution, disons, chaque seconde. Si c'est un problème, n'utilisez passleep
.
De plus, sleep
n'est pas très flexible en matière de contrôle.
Pour exécuter une tâche toutes les secondes ou avec un retard d'une seconde, je recommande fortement a ScheduledExecutorService
et soit scheduleAtFixedRate
ou scheduleWithFixedDelay
.
Par exemple, pour exécuter la méthode myTask
toutes les secondes (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");
}
Et en 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()
.